home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / ab20 / ab20_archive / utilities / shells / csh519g.lha / csh.doc < prev    next >
Text File  |  1992-02-26  |  108KB  |  2,950 lines

  1.  
  2.          ANLEITUNG FÜR CSHELL VERSION 5.19 1991
  3.         =======================================
  4.  
  5.  
  6.                  Inhalt
  7.                  ------
  8.  
  9.     O    Installation
  10.     I    Beschreibung
  11.     II    Übersicht der Haupteigenschaften
  12.     III    Einschränkungen
  13.     IV    Pipes
  14.     V    Präprozessor
  15.     VI    Kommandozeilen-Editierung
  16.     VII    Funktionstasten
  17.     VIII    Shell Kommandos
  18.     IX    Spezielle Variablen
  19.     X    Funktionen
  20.     XI    Diverses
  21.     XII    Beispiel-Stapeldateien
  22.     XIII    Vorgabewerte
  23.     XIV    Objektorientierte Eigenschaften
  24.     XV    Tastaturbelegungen
  25.  
  26.  
  27. O Installation
  28. --------------
  29.  
  30. Die CSH kann ganz einfach von der CLI-Kommandozeile aufgerufen werden, weil
  31. die CSH aus der Sicht von AmigaDOS keine richtige Shell wie l:Shell-Seg ist,
  32. sondern ein ganz normales Programm. Jedoch ist CShell 'pure', falls also der
  33. LHarc vergessen hat, das 'p'-Bit zu setzen, sollte es bitte gleich jetzt
  34. gesetzt werden ("protect Csh +p").
  35.  
  36. Endgültige Installation: Die Csh soll die AmigaShell komplett ersetzen,
  37. dazu sollte Csh gleich von Anfang an resident sein, dafür bitte wie folgt
  38. verfahren:
  39.  
  40. Kickstart 1.3
  41. 1. CSH irgendwohin auf die Harddisk oder Diskette kopieren, z.B. dh1:tools
  42. 2. Nun s:startup-sequence um das Folgende ergänzen:
  43.     Resident CLI L:Shell-Seg SYSTEM PURE ADD
  44.     Resident dh1:tools/Csh ADD
  45.     NewShell FROM s:Csh-startup
  46.     EndCLI
  47. 3. Die Datei s:Csh-startup erstellen, die das folgendes enthält:
  48.     Stack 8000
  49.     Csh -r s:firstlogin.sh
  50. 4. In die Datei s:firstlogin.sh alle Kommandos schreiben, welche nur nur
  51.     einmal aufgerufen werden sollen, etwa setmap, assign und setclock.
  52.     Dies wird eine Csh-Stapeldatei, bitte # als Kommentarzeichen
  53.     verweden und keine Punkt-Kommandos wie .key. Am Ende dieser
  54.     Datei soll stehen:
  55.      source s:login.sh
  56. 5. In der Datei s:login.sh stehen alle Kommandos, die für jedes neue
  57.     Shell-Window wieder ausgeführt werden sollen, z.B. alle 'alias' und
  58.     'set' Kommandos.
  59. 6. Und das Folgende sollte in der Datei s:shell-startup stehen, damit beim
  60.     Kommando NewShell oder von der Workbench her gleich eine Csh erscheint:
  61.      Csh s:login.sh
  62.     Achtung, alle danach folgenden Befehle werden erst dann ausgeführt,
  63.      wenn die Csh beendet wird !
  64.  
  65. Kickstart 2.0
  66. 1. CSH irgendwohin auf die Harddisk oder Diskette kopieren, z.B. dh1:tools
  67. 2. Nun s:startup-sequence bzw. s:user-startup um das Folgende ergänzen:
  68.     Stack 8000
  69.     Resident dh1:tools/Csh ADD
  70.     Csh s:firstlogin.sh
  71. 3. Bitte nun weiter bei Schritt 4 bzgl. Kickstart 1.3
  72.  
  73. Zusätzlich ist es empfehlenswert, CSH: irgendwohin zu 'assign'en, und Csh.doc
  74. und alle Stapeldateien dorthin kopieren.
  75. Also etwa:
  76.  assign CSH: dh1:tools
  77.  
  78. Ein generelles Installationsprogramm gibt es z.Z. nicht. Es ist auch
  79. ziemlich schwierig auf alle denkbaren Fälle von Konfigurationen und
  80. Sonderwünschen einzugehen. Der obig beschriebene Ablauf ist nur einmal
  81. zu erledigen, jedes Update der Csh selber, betrifft normalerweise nur die
  82. CSH selber, die vorliegende Anleitung und die Stapeldateien, nicht aber
  83. die Art und Weise wie Cshell gestartet wird. Sollte dies denn doch der Fall
  84. sein, bitte auf jeden Fall die hier beschriebene Prozedur durchlesen!
  85.  
  86. I Beschreibung
  87. --------------
  88.  
  89. Diese Version von CShell ist der Nachfolger von:
  90.     Shell V2.04 (C)Copyright 1986, Matthew Dillon, All Rights Reserved
  91.     Shell V2.04M-V2.07M by Steve Drew
  92.     Shell V2.08MI, V3.xxA and V4.xxA by Carlo Borreo & Cesare Dieni
  93.     Shell V5.xxL by U. Dominik Mueller
  94.  
  95. Irgendwelche Wünsche, Fehlermeldungen, Bierflaschen oder Bugreports,
  96. sind bitte an folgende Adressen zu senden:
  97.  
  98.      FIDONET : Urban Mueller@2:302/906 (AUGL BBS)
  99.      INTERNET: umueller@iiic.ethz.ch
  100. oder
  101.      U. D. Müller
  102.      Schulhausstrasse 83
  103.      CH-6312 Steinhausen
  104.      SWITZERLAND
  105.  
  106. Jedes Zeichen intelligenten Lebens ist willkommen.
  107. ('Scott me up Beamie, no intelligent lifeform down here...')
  108.  
  109. Bitte auch zuerst die Kapitel 'Einschränkungen' und 'Bekannte Fehler',
  110. lesen, bevor eine Fehler gemeldet wird.
  111. Die Support-Mailbox ist AUGL, +41 75 8 20 19, +41 75 8 20 18, +41 75 2 15 87
  112. (alle Leitungen USRobotics HST) login='cshell',passwort='support'.
  113.  
  114. Bitte auch die Datei 'feedback.doc' lesen und wenn möglich abschicken.
  115.  
  116. Wenn es um Versionen vor 5.00 geht, bitte an wenden Carlo Borrea oder
  117. Cesare Dieni wenden:
  118.  
  119.      BITNET: PERUGIA@ICNUCEVM.BITNET
  120.      FIDONET: 2:332/602.0@FIDONET
  121. oder
  122.      Carlo Borreo        Cesare Dieni
  123.      Via G. Berio 34    Via G. Taddei 3
  124.      I-18100 Imperia    I-56100 Pisa
  125.      Italy            Italy
  126.  
  127. CShell darf nur unverändert und nicht gegen Profit verbreitet werden.
  128.  
  129. *** VERBREITEN SIE NIE VERÄNDERTE VERSIONEN VON CSHELL ***
  130.  
  131. Wenn jeder eigene Versionen schreibt und weitergibt, würden wir innerhalb
  132. kürzester Zeit in Shell-Versionen begraben. Wenn eine Änderung an der
  133. Shell gemacht wurde, und diese anderen Benutzern zur Verfügung gestellt
  134. werden soll, dann sollte eine DIFF-Ausgabe oder eine Beschreibung dessen was
  135. geändert wurde an den Autor geschickt werden.
  136.  
  137.  
  138. EHRENHALLE
  139. ----------
  140.  
  141. Vielen Dank an alle Leute, die mir Feedback und Hilfestellung gegeben haben,
  142. namentlich Eddy Carroll, Patrizio Rusconi, Allard Siemelink, Magnus
  143. Heldestad, Roddi Walker, Roy Haverman, Steve Koren, Randell Jesup, Peter
  144. Orbaek und der unbekannte Schwede, der für mich den 2-LF-Bug gefunden hat.
  145.  
  146. Besonderer Dank gilt den Übersetzern dieses Dokuments:
  147. Roy Haverman, Jörg-Cyril Hoehle, Martin Horneffer, Hans-Christian
  148. Huerlimann, Markus Illenseer, Daniel Pfulg, Patrizio Rusconi, Christian
  149. Schneider, und mir selber...
  150.  
  151. Diese Version der Anleitung wurde von Markus Illenseer durch Entfernung
  152. grausamer Rechtschreibfehler, unglücklicher Übersetzungen und wilder
  153. Stilentartungen aus der deutschen Ur-Version erstellt. :-)
  154. Flammen, Lexika, Duden, Weinflaschen bitte an
  155.     markus@techfak.uni-bielefeld.de
  156. senden.
  157.  
  158. II ÜBERSICHT
  159. -------------
  160.  
  161. CShell bietet eine bequeme Alternative zu den AmigaDOS Befehlen. Alle
  162. Kommandos sind eingebaut und brauchen deshalb keine zusätzlichen Kommandos
  163. im c: Ordner.
  164.  
  165. Die wichtigsten Möglichkeiten:
  166.     - Frei programmierbare Kommandozeilen-Eingabe
  167.     - Kommandospeicher (die letzten 50 Kommandos werden gespeichert)
  168.     - Pipes (Ein- und Ausgabeumleitung)
  169.     - Aliase mit Argumenten
  170.     - Variablen
  171.     - Suchmuster (* und ? für Dateinamen)
  172.     - Bedingte Anweisungen (if, else, endif)
  173.     - Stapeldateien
  174.     - Dateinnamen-Vervollständigung mit TAB
  175.     - Objektorientierte Möglichkeiten, Dateiklassen und Operationen.
  176.     - Viele eingebaute Kommandos zur Beschleunigung der Ausführung
  177.     - Volle Funktionalität auf VT-Terminals
  178.  
  179. Eine Übereinstimmung mit der unter UNIX (tm) weit verbreiteten CSH, TCSH
  180.  oder RC ist nicht ungewollt aber kann z.Z. nicht in allen Bereichen erreicht
  181.  werden (z.B. Jobhandling), wird durch das Klassenprinzip aber deutlich
  182.  verbessert.
  183.  
  184. CShell läuft mit minimalem Stack (4 KBytes), aber für kompliziertere
  185.  Aliase und Stapeldateien sollte der Stack auf 8K erhöht werden bevor die
  186.  CShell startet.
  187.  
  188. Wird die CShell zum ersten Mal benutzet, bitte folgendes beachten:
  189.     - Die eingebauten Kommandos müssen in Kleinschrift eingegeben
  190.        werden, und können z.T. abgekürzt werden.
  191.     - Das Kommando 'c:Execute' kann nicht umgeleitet werden.
  192.        AmigaDOS Stapeldateien können weiterhin mit 'source' ausgeführt
  193.        werden, sofern jene keine .-Kommandos wie .key enthalten.
  194.     - Jederzeit Auskunft über ein gewünschtes CShell-Kommando
  195.        erhältlich, mittels 'man <kommando>'.
  196.  
  197.  
  198. III Einschränkungen
  199. -------------------
  200.  
  201. Der folgende Fehler betrifft nur V36 von Kickstart 2.0: Die internen
  202.  Kommandos können nicht gestartet werden. Dasselbe gilt für Kommandos in C:,
  203.  wenn diese mit dem AmigaDOS 'Resident' Kommando resident gemacht wurden. Mit
  204.  Csh's 'resident' funktionieren solche. Deshalb sollten die internen Residents
  205.  nicht verwendet werden. Dies kann mit dem Start-Schalter -i0 erreicht werden,
  206.  wenn Kickstart V36 verwendet wird.
  207.  
  208. Unter Kickstart 1.3, können AmigaDos-Residents nicht direkt gestartet werden.
  209.  Dies kann durch die Option -r verbessert. Diese kopiert die AmigaDOS
  210.  Resident Liste einmalig in die ARP-Resident-Liste (Diese Residents können
  211.  nicht mehr entfernt werden). Es wird versucht, eine bessere Lösung zu
  212.  finden.
  213.  
  214. Die beste Lösung unter beiden Kickstarts ist es, nur Csh selber AmigaDOS
  215.  resident zu installieren, und alle anderen Kommandos, wenn vorhanden, nur ARP
  216.  resident zu installieren. Unter 1.3 kann die Shell (wie auch alle anderen
  217.  Kommandos) nur von der Resident-Liste gestartet werden, wenn vorher das
  218.  Kommando 'resident CLI l:Shell-seg' und 'newcli' eingegeben wurden.
  219.  
  220. Das c:Execute Kommando kann nicht umgeleitet werden, es setzt keinen Return-
  221.  Kode und verursacht unter Umständen andere Probleme. Es arbeitet überhaupt
  222.  nicht mehr wenn es einen anderen Namen hat.
  223.  
  224. Der VDK: Handler und Frank Seidel's BootRam-Handler haben einen Fehler beim
  225.  setzen des Datei Datums. Soll das copy Kommando gebraucht werden, sollten
  226.  die Option -d und -p verwendt werden, sonst kann es sein das das Datum
  227.  fehlerhaft ist. (Das ist kein Shell Fehler)
  228.  
  229. Wenn Csh mit Conman verwendet wird kann in Betracht gezogen werden, Csh mit
  230.  der Option -a zu starten. Dies schaltet die Csh-Editier-Funktionen in der
  231.  Kommandozeile aus, statt dessen werden die des Conmans benutzt. Aber
  232.  dadurch gehen viele Csh Möglichkeiten verloren, wie z.B.
  233.  die Dateinamen-Vervollständigung.
  234.  
  235. CB-Handler (ein Tool das im CLI Window eine Scrollbar installiert) ist nicht
  236.  100% kompatibel zu Csh. Der Inhalt des CB-Handlers-Logs stimmt nicht immer
  237.  mit dem tatsächlichen Screen-Inhalt überein.
  238.  
  239.  
  240. IV. BEMERKUNGEN ZU DEN PIPES
  241. ----------------------------
  242.  
  243.     PIPES
  244.  
  245.     PIPES benutzen TemporärDateis im Ordner t:. Bitte vorsichtig mit
  246.      Suchmustern wie 't:*' da diese auch die Temporärdateien betreffen
  247.      könnten. Die Temporärdateien werden nach dem Beenden des Pipe
  248.      Segment gelöscht.
  249.  
  250.     Die benutzen Dateinamen sind einmalig, selbst wenn mehrere Shell's
  251.      nebeneinander laufen.
  252.  
  253.     Von nun an ist es auch möglich, interne Kommandos mittles Pipe in ihren
  254.      Ein- und Ausgaben zu steuern.
  255.      z.B. 'echo charlie >ram:x' oder 'echo "echo mem | Csh" | Csh'
  256.  
  257.     Kein BCPL Programm sollte mit Output-Append '>>' umgeleitet werden.
  258.  
  259.  
  260. V. KOMMANDO PRÄPROZESSOR
  261. --------------------------
  262.  
  263.     PRÄPROZESSING
  264.     Präprozessing wird in der Kommandozeile ausgeführt, bevor diese an
  265.      interne oder externe Routinen weitergegeben wird.
  266.  
  267.     ^c Wobei c ein Zeichen ist, daß in ein Kontroll Zeichen gewandelt
  268.      wird. z.B. '^l' steht für Control-l.
  269.  
  270.     \233 Fügt das Zeichen mit dem oktalen Kode 233 ein. Keine Werte
  271.      zwischen 200o und 232o benutzen, da diese spezielle Bedeutung haben.
  272.      \240 ist der Wort Seperator. (Ein \ )
  273.  
  274.     $Name Wobei Name ein variabler Name ist. Variablennamen können aus den
  275.      folgenden Zeichen bestehen: 0-9, a-z, A-Z und dem Unterstrich '_'.
  276.      Der Inhalt der spezifizierten Variablen wird gebraucht. Falls die
  277.      Variable nicht existiert, wird der Name selber eingesetzt.
  278.      z.B. Wenn die Variable 'i' 'Charlie' enthält, dann ist '$i' ->
  279.      'Charlie' Wenn die Variable aber nicht existiert dann bleibt '$i' ->
  280.      '$i'.
  281.  
  282.     ; Trennt Kommandos. 'echo charlie ; echo ben.' So können mehrere
  283.      Kommandos auf eine Zeile geschrieben werden.
  284.  
  285.     ' ' (ein Leerzeichen). Leerzeichen trennen Argumente.
  286.  
  287.     "Zeichenkette" ein in Anführungszeichen stehende Zeichenkette. Das
  288.      schliessende Anführungszeichen muss nicht gesetzt werden.
  289.      z.B. Sollen fünf Leerzeichen und ein 'a' ausgeben werden:
  290.      echo      a  -> a
  291.      echo "     a ->      a
  292.  
  293.     \c Verhindert den Inhalt eines Spezialzeichens.
  294.      '\^a' ist ein Circumflex und ein a und kein Control-A.
  295.      Ein Backslash wird wie folgt geschrieben: '\\' .
  296.      Dies wird ebenso benutzt, um das Suchen nach Aliases zu unterbinden.
  297.  
  298.     >Datei Spezifiziert Ausgaben Umleitung. Die Ausgabe des Kommandos wird
  299.      in die spezifizierte Datei geschrieben.
  300.  
  301.     >>Datei Spezifiziert Ausgaben Umleitung. Die Ausgabe wird an eine
  302.      bestehende Datei angehängt. (Arbeitet nicht mit BCPL Programmen).
  303.  
  304.     <Datei Spezifiziert Eingaben Umleitung. Das Kommando bekommt seine
  305.      Eingaben aus der Datei 'Datei' anstatt von der Tastatur.
  306.      Achtung, nicht alle Kommandos erwarten eine Eingabe. Es hat
  307.      z.B. keinen Sinn zu schreiben 'echo <charlie', da das 'echo'
  308.      Kommando nur seine Argumente ausgibt.
  309.  
  310.     | PIPE Spezifikator. Die Ausgabe des Kommandos auf der linken Seite,
  311.      wird zur Eingabe des Kommandos auf der Rechten. Die Shell braucht im
  312.      Moment Temporäredateien, um die Daten zwischenzuspeichern.
  313.  
  314.     !! Führe das letzte Kommando aus.
  315.  
  316.     !nn (<nn> ist eine Zahl). Fügt das Kommando aus dem Kommando-Speicher
  317.      Nummer <nn> ein.
  318.      Siehe HISTORY Kommando.
  319.  
  320.     !teil Sucht rückwärts durch den Kommando-Speicher nach einem Kommando
  321.      das gleich beginnt wie <teil>, und führt dieses aus.
  322.  
  323.     # Kommentar. Der Rest der Zeile wird übergangen.
  324.      Beachte: \# hebt die spezielle Wirkung des '#'-Zeichens auf.
  325.  
  326.     {e hi;e ho} Führt zwei Kommandos wie eines aus, so dass sie umgeleitet
  327.      werden können. (Siehe ALIAS Kommando). Die schliessende
  328.      geschweifte Klammer muss nicht geschrieben werden.
  329.  
  330.     $(fasel) Fügt die Ausgabe des Kommandos 'fasel' an dessen Position
  331.      in der Kommandozeile ein. Jede Zeile der Ausgabe gilt als
  332.      ein Argument. Die schliessende Klammer ist optional.
  333.  
  334.     'fasel' Fügt die Ausgabe des Kommandos 'fasel' an dessen Position
  335.      in der Kommandozeile ein. Jedes Wort der Ausgabe gilt als
  336.      ein Argument. Mehrere Leerzeichen werden entfernt.
  337.      Die schliessende Klammer ist optional.
  338.  
  339.     Achtung, den Unterschied zwischen folgendem bemerken:
  340.      alias count {echo eins;echo zwei}
  341.      alias count "echo eins;echo zwei
  342.  
  343.     Die erste Form schafft ein Alias, welches ein lokales Alias ent-
  344.      hält, während die 2. ein normales Alias generiert. Auch werden
  345.      Zeichen in geschweiften Klammern nur einmal interpretiert, sodass
  346.      nicht für jedes Spezialzeichen wieder einen Backslash gebraucht
  347.      wird.
  348.      Darum sehen die Kommandos in geschweiften Klammern so aus
  349.      als wenn sie auf der Kommandozeile eingetippt würden. Beispiel:
  350.       forever {echo \#
  351.       forever "echo \\\#
  352.     Ein Block kann sich über mehrere Zeilen ausdehnen. Siehe 'source'
  353.      Kommando.
  354.  
  355.  
  356. VI. KOMMANDO ZEILEN EDITIEREN
  357. -----------------------------
  358.  
  359.  Die Kommandozeile kann bis zu 255 Zeichen lang sein.
  360.  Einfügungen und Löschungen funktionieren auch über mehrere Zeilen.
  361.  Die Stapeldatei 'menu.sh' installiert ein Intuition Menu das die meisten
  362.  Editierfunktionen enthält.
  363.  
  364.     EDITIEREN
  365.  
  366.     -- CURSOR BEWEGEN--
  367.     Pfeil Links     Ein Zeichen nach Links
  368.     Pfeil Rechts     Ein Zeichen nach Rechts
  369.     Shift-Pfeil     Links Ein Wort nach Links
  370.     Shift-Pfeil     Rechts Ein Wort nach Rechts
  371.     ESC-Pfeil     Links Gehe zum Beginn der Zeile (^A) (^Z)
  372.     ESC-Pfeil     Rechts Gehe zum Ende der Zeile (^E)
  373.     -- LOESCHEN --
  374.     Backspace     Zeichen Links des Cursors
  375.     Del Zeichen     Unter dem Cursor
  376.     ESC-Backspace     Wort Links des Cursors (^W)
  377.     ESC-Del Wort     Rechts des Cursors
  378.     ESC-x-Backspace    Bis zum Beginn der Zeile (^B)
  379.     ESC-x-Del     Bis zum Ende der Zeile (^K)
  380.     ESC-d         Die gesammte Zeile (^X)
  381.     -- KOMMANDO-SPEICHER --
  382.     Pfeil aufwärts     Im Kommando-Speicher ein Kommando nach oben
  383.     Pfeil abwärts     Im Kommando-Speicher ein Kommando nach unten
  384.     Shift-Pfeil aufwärts     Erstes Kommando im Kommando-Speicher
  385.                 das 'passt'
  386.     Shift-Pfeil abwärts     Geht zum Ende des Kommando-Speichers
  387.     ESC-Pfeil aufwärts      Geht zum Beginn des Kommando-Speichers
  388.     ESC-Pfeil abwärts       Geht zum Ende der Kommando-Speichers
  389.     ESC-!        Holt Kommando von einem schon eingegebenen Teil
  390.             aus Kommando-Speicher
  391.     ^T         Fügt die letzte Zeile ein, ausser dem ersten Wort
  392.     ^P         Kopiere vorhergehendes Wort. (Nützlich für mv)
  393.     -- DATEINAMEN VERVOLLSTAENDIGUNG --
  394.     TAB         Fügt den ersten passenden Dateinamen ein
  395.     Shift-TAB     Fügt längsten passenden gemeinsamen Dateinamen ein
  396.     ESC-TAB     Fügt alle Dateinamen ein die passen.(Auch ESC-*)
  397.     ESC-c         Quick-CD mit Wort links des Cursors (TAB -> Cycling)
  398.     ESC-~         Fügt den letzen Ordner ein
  399.     ^D         Zeigt alle Dateien die dem Muster einsprechen
  400.             (Auch ESC-=)
  401.     -- ZEILE AUSFUEHREN--
  402.     Return         Führt Zeile aus
  403.     ESC-Return     Führt akt. Zeile des Kommando-Speichers aus und zeigt
  404.             nächste
  405.     ^N         Speichert aktuelle Kommandozeile und geht zur nächsten
  406.     ^\ EOF         (Csh wird abgebrochen)
  407.     -- VERSCHIEDENES --
  408.     ^L         Schreibe die momentane Zeile nochmals.
  409.     ^O         Echo ^O
  410.     ^R         Wiederhole letztes Editierkommando
  411.     ^U         Letzten Editierbefehl Rückgängig machen
  412.     ESC-i         Umschalten Einfüge/Überschreibemodus
  413.     f1-f10         Führe Kommando aus wenn Variable existiert.
  414.     F1-F10         Noch mehr Kommandos (Geshiftete f Tasten).
  415.     Help         Führt help Kommando aus.
  416.  
  417. Wenn der Cursor auf oder direkt hinter einem noch nicht kompletten Dateinamen
  418.  steht und die TAB Taste gedrückt wird, setzt Cshell den ersten Dateinamen
  419.  (alphabethisch sortiert) ein, der dem teilweise geschreibenen Namen
  420.  entspricht. Alle Wildcards sind hier erlaubt. Wenn keine gegeben sind, wird
  421.  automatisch ein '*' angehängt. Durch wiederholtes Drücken der TAB Taste kann
  422.  durch eine Liste aller Dateien gegangen werden, die dem nicht kompletten
  423.  Dateinamen entsprechen.
  424.  Shift-Tab fügt nur jenen Teil der Zeichenkette ein, der allen gefundenen Namen
  425.  gemeinsam ist.
  426.  ESC-Tab fügt den Namen des Ordners ein, in den gewechselt würde, wenn
  427.  mit dem aktuellen Teil der Zeichenkette ein Quick-CD ausführt würde.
  428.  
  429. Achtung, ^D ermöglicht jetzt das Verlassen der Stapeldateien wie unter
  430.  AmigaDOS, oder Ordner anzeigt ohne Csh zu verlassen. Soll alles beim Alten
  431.  belassen werden, sollte ein 'keymap 0 4=41' ausgeführt werden.
  432.  
  433. Die Ctrl-F,Ctrl-G,Ctrl-V und die Ctrl-Y Kombination sind unbesetzt. Diese
  434.  können beliebig belegt werden (siehe Kapitel XV). Auch alle voreingestellten
  435.  Kombinationen können neu belegt werden.
  436.  
  437.  
  438. VII. FUNKTIONSTASTEN
  439. --------------------
  440.  
  441.     Funktionstasten
  442.      setzen jetzt Text an der aktuellen Position der Kommandozeile ein. Der Text
  443.      kann mit einem '^M' terminiert werden, was einem <Return> entspricht und
  444.      damit das Kommando sogleich in der Kommandozeile ausführt. 'f1' bedeutet
  445.      Funktionstaste ohne Shift, 'F1' mit Shift. Die meisten Funktionstasten
  446.      haben eine Voreinstellung, aber kann diese natürlich auch anders definiert
  447.      werden.
  448.          $ set f1 dir df0:^M
  449.      würde den Text 'set f1 dir df0:' auf die Kommandozeile hinzufügen
  450.      und danach noch <Return> ausführen.
  451.         $ set f1 dir
  452.      würde den Text 'dir' auf die Kommandozeile hinzufügen worauf der Benutzer
  453.      dann z.B. ' df0:<Return>' eingeben kann.
  454.  
  455. VIII. SHELLKOMMANDOS
  456. --------------------
  457.  
  458.     START OPTIONEN
  459.     Zuerst die Shell vom CLI aus starten:
  460.  
  461.     Csh [-abcfiknstv] [-c Kommando;..;KommandoN]
  462.     Csh [-abcfiknstv] [Stapeldatei1 ... StapeldateiN]
  463.  
  464.      -a AUX: Modus. Kein Kommandozeilen-Editieren und Text-Markierung.
  465.      -b Startet Shell im Hintergrund, was heisst, nur Task Priorität -1.
  466.      -c Erlaubt Ausführung EINER Kommandozeile und verlässt Shell gleich
  467.        wieder. Nützlich um Shellkommandos im Hintergrund oder von einer
  468.        externen Applikation aus auszuführen. Bsp.:
  469.        Run Csh -c "dir df0:; copy -r df0: df1: >nil:; echo Done"
  470.      -f Startet Shell im Vordergrund, was heisst, Task Priorität 1.
  471.       Diese Priorität kann wieder auf 0 gesetzt werden am Ende der .login
  472.        Datei
  473.      -i0 Keine INTERNEN residents. Für V36 Kickstarts.
  474.      -k Setzt _nobreak bevor irgendwas getan wird.
  475.      -n Unterdrückt starten von s:.login
  476.      -r Kopiert die AmigaDOS resident list zur ARP resident list.
  477.         Diese kann nicht mehr entfernet werden. Kein Kopieren unter
  478.         Kick 2.0 oder  wenn ARP residents existieren.
  479.      -s Erlaubt global den Stern '*' anstatt '#?' in AmigaDOS 2.0
  480.      -t Terminal Modus. Es ist möglich an einem VT100-kompatiblen
  481.        Terminal Kommandozeilen zu editieren sowie auch Text-
  482.        Markierung zu betreiben. Backspace und DEL Austausch wird
  483.        mit dem 'keymap'-Kommando bewerkstelligt.
  484.      -v setzt _verbose zu 'hs' bevor irgendwas getan wird.
  485.  
  486. Unter 1.3 ist es wohl am Besten Csh mit dem AmigaDOS Kommando Resident
  487.  in der s:startup-sequence resident zu machen und dann mit der Option -r
  488.  zu starten. Auf diese weise kannst du eine weitere residente Csh
  489.  aus der Csh heraus starten. BEACHTE: Residents, die mit -r kopiert
  490.  wurden können nicht mehr entfernt werden! Es ist ratsam für alles
  491.  andere ausser Csh das interne resident Kommando zu nutzen.
  492.  
  493.     KOMMANDOAUSFüHRUNG
  494.  
  495.     Interne Shellkommandos unterscheiden Gross- und Kleinschreibung und
  496.      können abgekürzt werden.
  497.  
  498.     Das erste Argument ist der Kommandoname... schauen wir uns mal an
  499.      wie die Shell versucht, es auszuführen:
  500.  
  501.     1) Die Alias Liste wird nach dem exakt passenden Muster, das
  502.         vorgegeben wurde, durchsucht.
  503.     2) Die interne Kommando-Liste wird nach einem teilweise passenden
  504.         Muster abgesucht (z.B. 'resi' anstatt 'resident').
  505.         Jedenfalls sollte das Muster genügend beinhalten, damit das
  506.         Kommando auch einmalig ist.
  507.     3) Danach wird die Funktions-Liste nach dem exakt passenden Muster
  508.         abgesucht. Wenn eine gefunden wird, dann wird dessen Resultat
  509.         auf die Standard-Ausgabe ausgegeben.
  510.     4) Jetzt nimmt die Shell an, dass es sich um ein externes Kommando
  511.         handelt. Argumente mit Freizeichen, Strichpunkten oder leeren
  512.         Zeichenketten werden mit Anführungs- und Schlusszeichen umrahmt.
  513.         (Wichtig!)
  514.     5) Falls es sich um ein Ordner handelt, wird ein 'cd <Datei>'
  515.         ausgeführt.
  516.     6) Die AmigaDOS und ARP resident list werden abgesucht (Es ist
  517.         'resident' von der Shell zu benützen, um eine Datei in der ARP
  518.         Liste hinzufügen; entfernen mit add/remove).
  519.     7) Wenn die Datei im aktuellen Ordner ist,und auch ausführbar ist,
  520.         dann wird sie als Programm gestartet.
  521.     8) Es wird im AmigaDOS path (Pfad) und c: (Achtung, Path auf C:
  522.         erweitert, funktioniert nicht unter 2.0. Dazu 'path'
  523.         verwenden).
  524.     9) Jetzt wird der Shell Pfad ($_path) abgesucht. Wenn das
  525.         Kommando dort gefunden wird, und ausführbar ist, wird es
  526.         gestartet. Wenn das 's'-Bit gesetzt ist, wird es unter der
  527.         zugewiesenen Shell ausgeführt. Siehe FREMDE SHELLS.
  528.     10) Wenn eine Datei existiert mit Endung '.sh' und denselben
  529.          Basisnamen im aktuellen Ordner oder im Shell Pfad, dann
  530.          wird sie mit dem Shellkommando 'source' ausgeführt.
  531.     11) Als nächstes wird die Variable _rxpath untersucht. Wenn dort
  532.          eine Datei mit der Endung '.rexx' existiert und denselben
  533.          Basisnamen im aktuellen Ordner oder im '$_rxpath', dann wird
  534.          sie mit dem Arexxkommando 'RX <Datei>' ausgeführt.
  535.     12) Wenn bis hierhin nichts gefunden wurde, wird der Datei ein 'exec'-
  536.          Kommando geschickt. Siehe Kapitel XIV für weitere Infos über
  537.          Klassen und Aktionen.
  538.  
  539.     Um zu erzwingen, dass ein externes 'dir'-Kommando gestartet wird, muß
  540.      'Dir' eingeben werden. Es wäre eine gute Angewohnheit alle externen
  541.      Kommandos mit einem grossgeschriebenen Erstbuchstaben aufzurufen,
  542.      obwohl es nicht notwendig ist.
  543.  
  544.     AUTOMATISCHES SOURCING
  545.     Sourcing (=Ausführen von Stapeldateien) kann erreicht werden indem
  546.      die Stapeldatei mit der Endung '.sh' aufgerufen wird. Also, wenn
  547.      'Quell' aufgerufen wird, und die Datei 'Quell.sh' im aktuellen
  548.      Ordner oder im Shell Pfad existiert (BEACHTEN SIE: NICHT im
  549.      AmigaDOS Pfad), dann wird sie mit dem 'source' Kommando mit allen
  550.      Argumenten, die in der Variable $_passed platziert wurden, ausgeführt.
  551.      Das wäre dasselbe, als würde 'source Quelle.sh' eingeben werden.
  552.  
  553.     FREMDE SHELLS
  554.     Werden unterstützt durch Schlüsselzeichen zu Beginn dieser
  555.      Stapeldateien. Wenn eine Datei im $_path ein s-bit hat, werden die
  556.      ersten paar Zeichen gelesen. Wenn die ersten zwei Zeichen '/*', '#!'
  557.      oder ';!' seien sollten, wird der Rest der ersten Zeile als der Name
  558.      der Shell interpretiert, die das Skript ausführen soll. Wenn diese
  559.      magischen Zeichen fehlen, wird c:Execute benutzt.
  560.     Beispiele:
  561.      /*RX         /* Eine Arexx-Stapeldatei */
  562.      #!SKsh -c source     # Eine SKsh-Stapeldatei mit Argument
  563.  
  564.     SUCHMUSTER
  565.     Die meisten Shellkommandos werden mehrere Argumente, die das
  566.      Resultat einer Suchmuster Ergänzung sind, akzeptieren. Auch wenn
  567.      ein externes Kommando aufgerufen wird, wird die Shell zuerst die
  568.      Suchmuster Ergänzung zu einzelnen Argumenten separieren. Wird ein
  569.      externes Kommando mit eigener Suchmuster Ergänzung verlangt, ist es
  570.      sinnvoll, Anführungszeichen um das spezielle Suchmuster zu setzen,
  571.      oder ein Alias zu benützen (siehe Erklärung von 'alias').
  572.      Beispiele:
  573.      arc a new.arc *.txt   #die Shell wird Ergänzungen zu arc schicken.
  574.      arc a new.arc "*.txt" #arc soll die Suchmuster selber expandieren.
  575.      alias arc "*a Arc $a" #nun wird die Shell nie ergänzen.
  576.  
  577.     Erlaubte Suchmuster:
  578.     ?     Zu irgendeinem (1) Zeichen passend.
  579.     *     Zu irgendeiner Zeichenkette passend. (Beliebig lang!)
  580.     .../*     Rekursiv suchen in alle Unterordner hinunter
  581.           vom aktuellen Ordner ausgehend.
  582.     ~     Ausschluss der Suchmusterspezifikation.
  583.     !     Gleichbedeutend zu '~'. Wird aus Kompatibilitätsgründen
  584.           unterstützt.
  585.     &     Kommt als Prefix vor das Muster, fragt Bestätigung für
  586.           jede Datei ab.
  587.     []    Zeichenklasse. [a-c] läßt die Zeichen a, b und c zu.
  588.     ~     Der vorherige aktuelle Ordner (sofern
  589.           das ~ abgesondert dasteht).
  590.  
  591.     BEACHTE: Das Muster muss ein '?' oder ein '*' enthalten, sonst
  592.      wird es nicht als solches betrachtet. Auch ein einzelnes '?' als
  593.      Muster im ersten Argument eines Kommandos kann nicht ergänzt werden,
  594.      da dies an das Kommando weitergegeben wird, damit dieses Kommando
  595.      eine Kurzanleitung von sich selbst ausgibt (Help-Funktion der
  596.      internen Kommandos).
  597.  
  598.     Hier einige Beispiele für Suchmuster, um das Oben gesagte besser
  599.     zu illustrieren:
  600.  
  601.     df0:.../*     Alle Dateien in allen Ordnern von df0:
  602.     df0:.../!*.info   Alle Dateien von df0: aber OHNE Dateien mit der
  603.               Endung '.info'
  604.     !*.o !*.c     Alle Dateien im aktuellen Ordnern ausser
  605.               solche mit Endung '.o' oder '.c'
  606.     df1:&*        Alle Dateien in df1:, aber Bestätigung durch
  607.               Abfrage
  608.     *.[co]        Alle Dateien mit Endung '.c' oder '.o'
  609.     ~*.[co]       Alle Dateien ohne Endung '.c' oder '.o'
  610.     ~         Vorheriger aktueller Ordner
  611.     ~/*.c         Alle '.c'-Dateien im vorherigen aktuellen
  612.               Ordner
  613.     ~//           Das Vaterordner vom vorherigen aktuellen
  614.               Ordner
  615.     .         Das aktuelle Ordner
  616.     ./fasel.c     Gleichbedeutend mit fasel.c
  617.     ..        Der Vaterordner vom aktuellen Ordner
  618.     ../fasel.c    Die Datei fasel.c im Vaterordner
  619.  
  620.     Achtung, einige Kommandos verhindern Suchmuster Ergänzung:
  621.       dir, rpn, whereis und window.
  622.      Diese Kommandos werden die Suchmuster selber erweitern.
  623.      Darum wird auch
  624.       dir @without( *.? , *.o )
  625.      nicht funktionieren. Anstelle dessen ist zu benutzen:
  626.       set arg @without( *.? , *.o );dir $arg
  627.  
  628.     Es gibt eine Ausnahme in den Regeln oben: Ein einzelnes '?' als
  629.      erstes Argument wird nicht erweitert. Stattdessen erlaubt es eine
  630.      Anzeige des Kommandohilfstextes.
  631.  
  632.     Folgende Symbole werden noch nicht unterstützt durch Suchmuster
  633.      Ergänzung, werden aber von 'search -w' und '@match()' akzeptiert:
  634.  
  635.      ( | ) mit OR suchen (OR=logisches ODER)
  636.      # einmal oder mehrmals das unmittelbar folgende Zeichen nach #
  637.  
  638.     Beispiele:
  639.  
  640.     "k#a"          passt zu: ka, kaa, kaaa, etc.
  641.     "hel(lo|p)"    passt zu: hello oder help.
  642.  
  643.  
  644. VIII Shell Kommandos
  645. --------------------
  646.  
  647.     ABORTLINE
  648.     Gebrauch: abortline
  649.     Beispiel: echo a; abort; echo b
  650.     Ergebnis: a
  651.  
  652.     Verhindert, daß der Rest der Zeile ausgeführt wird. Wird
  653.      üblicherweise im Zusammenhang mit der Ausnahme-Behandlung
  654.      verwendet.
  655.  
  656.     ACTION
  657.     Gebrauch: action [-a] Methodenname Datei [Argumente]
  658.  
  659.     Wendet eine Methode auf ein Datei an.
  660.  
  661.     Optionen:
  662.      -a (abort)
  663.     Es wird 0 bei Erfolg, 1 im Fehlerfalle zurückgegeben.
  664.      Sonst werden die normalen Ferhlercodes 10 oder 11
  665.      zurückgegeben.
  666.  
  667.     ADDBUFFERS
  668.     Gebrauch: addbuffers Gerät Puffer [Gerät Puffer...]
  669.     Beispiel: addbuffers DH1: 200
  670.  
  671.     Wie das gleichnamige AmigaDOS Kommando. Weist einem
  672.      AmigaDOS Gerät neue Puffer zu. Jeder Puffer verbraucht 512
  673.      Bytes RAM. (Chip!)
  674.  
  675.     ALIAS
  676.     Gebrauch: alias [Name [Kommando Zeichenkette] ]
  677.     Beispiel: alias vt "echo Starte VT100;run sys:tools/vt100"
  678.  
  679.     Weist einem Namen eine (Kommando-)Zeichenkette zu. Mehrere
  680.      Kommandos können zu einem 'Alias' zusammengefasst werden, wenn
  681.      sie wie im Beispiel in Anführungszeichen stehen, und mit
  682.      Semikola getrennt werden. Danach braucht nur noch der Name
  683.      eingegeben zu werden und die komplette Kommando-Zeile wird
  684.      ausgeführt.
  685.      'Alias'e dürfen sich gegeseitig ausrufen, aber nicht
  686.      rekursiv. Dadurch funktioniert z.B. so etwas:
  687.      alias ls "ls -s"
  688.      Rekursivität wird von der Shell nicht abgefangen !
  689.  
  690.     Das Ersetzen durch 'alias'e kann wie folgt
  691.      verhindert werden: \ls
  692.  
  693.     Übergabe von Argumenten an ein Alias:
  694.  
  695.     Gebrauch: alias Name "%Var[%Var...] [Kommando Zeichenkette]"
  696.      alias name "*Var[%Var...] [Kommando Zeichenkette ]"
  697.     Beispiel: alias xx "%q%w echo Hallo $q, Du siehst $w aus!
  698.      xx Willie heute gut
  699.     Ergebnis: Hallo Willie, Du siehst heute gut aus!
  700.  
  701.     Diese zweite Form des Alias-Befehls erlaubt es durch die
  702.      Verwendung von Variablennamen, Argumente mitten im der
  703.      Zeichenkette zu verwenden. Diese Variablen sind lokal und
  704.      außerhalb des Alias nicht mehr wirksam. Diese haben keinen Einfluß
  705.      auf andere gleichnamige Variablen.
  706.      Werden mehrere Argumente angegeben, wird jeder Variablen
  707.      ein Wort zugewiesen, der letzten aber, wie im Beispiel, der
  708.      Rest der Zeile.
  709.  
  710.     Ein "*" statt dem "%" verhindert die Ausführung von
  711.      Suchmustern. Beispiel:
  712.  
  713.      alias lharc "*a lharc $a
  714.  
  715.     Um die Suchmuster auszuführen, kann folgendes verwendet werden:
  716.      exec set a $a
  717.  
  718.     IMPLIZITE ALIAS'e:
  719.  
  720.     Gebrauch: {Kommando;Kommando}
  721.      {%var Kommando;Kommando} Argument1 .. ArgumentN
  722.     Beispiel: {%tmp echo %tmp %tmp} Hallo
  723.     Ergebnis: Hallo Hallo
  724.  
  725.     Geschweifte Klammern definieren temporäre Aliase. Ihre
  726.      Ein- und Ausgabe kann als Ganzes umgelenkt werden, sie
  727.      können Argumente und lokale Variablen haben. Diese zählen als
  728.      ein Argument, selbst wenn sie Leerzeichen enthalten (wie bei
  729.      Anführungszeichen) und sie können beliebig geschachtelt
  730.      werden. Die schließenden Klammer ist optional, wenn jene am
  731.      Ende einer Zeile steht. Beispiel:
  732.  
  733.       alias sicher {e "Sind Sie sicher?"; input -s Klar}
  734.  
  735.     AREXX
  736.     Die Kommandos RXREC und RXSEND werden von der Cshell zur Verfügung
  737.      gestellt. Damit ist optimales Arbeiten mit AREXX von der Shell
  738.      gewährleistet. Der Rexxmast ist natürlich selber zu installieren,
  739.      am besten in s:startup-sequence. Bitte auch im AREXX-Manual oder
  740.      im AmigaDOS-Manual (WB 2.0) nachlesen.
  741.  
  742.     ASCII
  743.     Gebrauch: ascii
  744.      ascii Zeichenkette
  745.  
  746.     Zeigt beim Aufruf ohne Zeichenkette eine komplette ASCII
  747.     Tabelle. Optionen:
  748.      -h : zeigt die Nummern in hexadezimaler (sedesimal) Schreibweise
  749.      -o : zeigt die Nummern in oktaler Schreibweise
  750.  
  751.     ASET
  752.     Gebrauch: aset Name Wert
  753.     Beispiel: aset INCLUDE include:
  754.  
  755.      Erzeugt eine Umgebungs-Variable im veralteten Aztec/ARP Format.
  756.  
  757.     ASSIGN
  758.     Gebrauch: assign
  759.           assign Logisch
  760.           assign [-lnp] Log.1 Phys.1 [ ... Log.N Phys.N]
  761.  
  762.      Die erste Form zeigt alle Assigns.
  763.      Die Zweite löscht ein Assign.
  764.      Die Dritte weist dem logischen Gerät 'Logiisch1' das
  765.       physikalische 'Physikalisch1' zu, etc.
  766.  
  767.      -l erzeugt late-binding Assigns (nur unter Kick 2.0)
  768.      -n erzeugt non-binding Assigns (nur unter Kick 2.0)
  769.      -p erzeugt path-Assigns (nur unter Kick 2.0)
  770.      Eine Erklärung dieser Assign-Arten findet sich im AmigaDOS
  771.       Handbuch.
  772.  
  773.     BASENAME
  774.     Gebrauch : basename Var Pfad [Pfad ...]
  775.     Beispiel : basename x df0:c/Dir  # setzt x auf "Dir"
  776.            basename y sys:tool/iconed # setzt y auf "iconed"
  777.  
  778.      Setzt die angegebene Variable auf den Dateinamen eines Pfades.
  779.  
  780.     CAT
  781.     Gebrauch : cat [-n][Datei1 ... DateiN]
  782.     Beispiel : cat fasel.txt
  783.  
  784.     Schreibt die angegebene Datei(en) auf die Standard-Ausgabe. Wenn
  785.      keine Datei angegeben wird, wird statt dessen die
  786.      Standard-Eingabe verwendet (Hinweis: ^\ markiert das
  787.      Datei-Ende). CAT ist nur zur Ausgabe von Text-Dateien gedacht.
  788.      Die -n Option nummeriert die ausgegebenen Zeilen.
  789.  
  790.     CD
  791.     Gebrauch : cd [Pfad]
  792.            cd -g Gerät1 [Gerät2 .. [GerätN] .. ]
  793.  
  794.     Wechselt den aktuelle Ordner. Die Angabe von '..'
  795.      zum Wechseln in den Vaterordner ist erlaubt (allerdings
  796.      handelt es sich dabei um ein Csh-spezifisches Feature -
  797.      normalerweise wird auf dem Amiga "/" verwendet).
  798.  
  799.     In den meisten Fällen ist die Angabe von 'CD' überflüssig.
  800.      Die einfache Eingabe eines Ordners reicht der Csh.
  801.      Ein einzelnes '~' in der Kommando-Zeile wechselt stets zum
  802.      jeweils letzten aktuellen Ordner.
  803.  
  804.     In zwei Fällen ist dennoch die Angabe von 'CD' sinnvoll:
  805.  
  806.     Die Eingabe 'cd *tem' wechselt in den Ordner
  807.      dessen Name passt.
  808.  
  809.  
  810.     Die zweite Form erzeugt eine Liste aller Ordner der
  811.      angegebenen Geräte. Diese wird in der Datei gespeichert, das
  812.      in der Variablen $_qcd angegeben ist (default:
  813.      'Csh:Csh-qcd'). Diese Datei wird nicht erweitert, sondern
  814.      stets überschrieben. Wenn diese Datei einmal existiert,
  815.      kann mit CD auch in Ordner gewechselt werden, die nicht
  816.      im aktuellen Ordner liegen.
  817.  
  818.     Existieren zwei Ordner, von denen einer häufiger
  819.      gebraucht wird, so sollte dieser zuerst in der qcd-Datei stehen.
  820.      Ebenso kann die qcd-Datei sortiert werden (mit 'sort').
  821.  
  822.     Es ist auch möglich, eine Abkürzung des Ordners einzugeben. Dazu wird
  823.      kein '*' benötigt. Sollte dann versehentlich der falsche Ordner
  824.      angesprochen werden, so können durch Wiederholen der Kommando-Zeile
  825.      (Cursor-Up + Return) alle passenden Ordner angezeigt bekommen.
  826.  
  827.     Außerdem können logische Geräte und Assings in die qcd-Datei
  828.      aufgenommen werden. So kann z.B. nach 'PageStream:' gelangt werden,
  829.      indem 'cd page' eingegeben wird.
  830.  
  831.     CD ohne Argumente zeigt den aktuellen Ordner an.
  832.  
  833.     CLASS
  834.     Gebrauch : [-n] Name {type=Argument} [ "actions" {action=Kommando} ]
  835.     Beispiel : class zoo offs=20,dca7c4fd ext=.zoo actions view="zoo l"
  836.  
  837.     Definiert eine neue Klasse von Dateien und die Methoden, die
  838.      auf solche in verschiedenen Fällen angewendet werden sollen.
  839.      Siehe Abschnitt XIV: Objekte
  840.  
  841.     Optionen : -n alte Definition löschen
  842.  
  843.     CLOSE
  844.     Gebrauch : close [Datei-Nummer]
  845.  
  846.     Schließt die angegebene, mit OPEN geöffnete Datei. Ohne
  847.      Angabe einer Datei-Nummer werden alle Dateien geschlossen. S.a.
  848.      FLIST und OPEN.
  849.  
  850.     CLS
  851.     Gebrauch : cls
  852.  
  853.     Ein Alias. Löscht den Bildschirm, allerdings auch auf
  854.      Terminals, wozu echo ^l nicht reicht.
  855.  
  856.     COPY
  857.     Gebrauch : copy [-udfpm] Datei Datei
  858.     oder     : copy [-udfpm] Datei1 .. DateiN Ord
  859.     oder     : copy [-rudfp] Ord1...OrdN Datei1...DateiN Ord
  860.  
  861.     Optionen:
  862.     -r rekursiv, auch Unterordner kopieren.
  863.     -u update, nicht kopieren, wenn eine neuere Version existiert.
  864.     -f freshen, nicht kopieren, wenn die Ziel-Datei nicht
  865.        existiert oder neuer ist.
  866.     -d Datei-Datum nicht mitkopieren.
  867.     -p Sicherheits-Bits nicht mitkopieren.
  868.     -m löscht das Original. Funktioniert nicht mit -r zusammen.
  869.  
  870.     Beispiel : copy -r dh0: dh2:
  871.  
  872.     Kopiert Ordner oder Dateien. Wenn Ordner
  873.      kopiert werden sollen, muß die Option -r angegeben werden,
  874.      um auch Unterverzeichnisse mitzukopieren. Sonst werden nur
  875.      die Dateien der oberen Ebene kopiert.
  876.  
  877.     Es werden alle Dateien, die gerade kopiert werden, und alle
  878.      Ordner, die gerade angelegt werden, angezeigt. Diese
  879.      Ausgabe kann mit Ausgabe-Umlenkungen vermieden werden.
  880.      Z.B.: copy -r dh0: dh2: >NIL:
  881.  
  882.     COPY bricht nach den aktuellen Datei ab, falls CTRL-C
  883.      gedrückt wird.
  884.  
  885.     COPY setzt normalerweise das Datum des Ziel-Dateien auf das
  886.      des Quell-Dateien. Dies kann mit -d verhindert werden.
  887.  
  888.     Analog werden die Sicherheits-Bits behandelt. Dies wird
  889.      mit -p verhindert. Das Archive-Bit wird immer gelöscht.
  890.  
  891.     COPY erzeugt jetzt den Ziel-Ordner selbst, falls er
  892.      noch nicht existiert, falls 'copy [-r] Ord Ord' eingegeben
  893.      wurde. Bei der Eingabe von 'copy Datei Datei Datei Ord' muß
  894.      'Ord' jedoch schon existieren.
  895.  
  896.  
  897.     CP
  898.     Synonym zu COPY.
  899.  
  900.     DATE
  901.     Gebrauch :date [-sr] [neues Datum] [neue Zeit]
  902.     Beispiel : date Wednesday # gemeint ist NÄCHSTER Mittwoch
  903.  
  904.     Wird verwendet um das System-Datum und/oder -Zeit zu setzen. Alle
  905.      Standard-Optionen können verwendet werden(yesterday, tomorrow, etc.).
  906.      Führende Nullen sind nicht erforderlich.
  907.      Ohne Parameter wird (aktuelle) DD-MMM-YY HH:MM:SS angezeigt.
  908.      Optionen:
  909.      -s speichert die aktuelle Zeit
  910.      -r zeigt die verstrichene Zeit seit der gespeicherten aufs
  911.       Hundertstel genau an. (Sinnvoll für Stapeldateien)
  912.  
  913.     DEC
  914.     Gebrauch : dec Variablenname [Wert]
  915.     Beispiel : dec abc
  916.  
  917.     Decrementiert (verringert) das Numerische Äquivalent der Variablen um
  918.      den angegebenen Wert (Vorgabe ist 1) und setzt das
  919.      ASCII-Zeichenketten-Resultat zurück in die Variable.
  920.  
  921.     DELETE
  922.     Gebrauch : delete [-p][-r] Datei1 [..DateiN]
  923.     Beispiel : delete fasel.txt frust.c
  924.  
  925.     Lösche die angegebenen Dateien. Das Kommando gibt immer Fehlerkode0
  926.      zurück. Leere Ordner können gelöscht werden. Die Option '-r'
  927.      löscht nicht-leere Ordner indem es alle Unterordner rekursiv löscht.
  928.     Wird die Option '-p' angegeben, können löschgeschützte Dateien
  929.      gelöscht werden.
  930.     Beim Löschen mit Suchmustern werden die Dateien aufgelistet wie sie
  931.      gelöscht werden. Dieses kann unterdrückt werden, indem nach nil:
  932.      umgeleitet wird.
  933.     Wird die Option -q angegeben, werden keine Fehlermeldungen ausgegeben,
  934.      wenn eine zu löschende Datei nicht existiert oder nicht gelöscht
  935.      werden konnte.
  936.  
  937.     DIR
  938.     Gebrauch : dir [-abcdfhiklnoqstuv] [-z lformat] [Pfad Pfad ... ]
  939.     Beispiel : dir -ts downloads:
  940.            dir -lz "%7s %-.16n %m" *.c
  941.     Optionen:
  942.      -d nur Ordner listen
  943.      -f nur Dateien listen
  944.      -h nur Dateien listen, die nicht mit einem Punkt anfangen, mit
  945.         '.info' enden oder das h-Flag gesetzt haben.
  946.      -s kurze Multi(4)-Kolonen Anzeige
  947.      -c keine Farbänderung für Ordner
  948.      -q zeigt keine Blocklängen an
  949.      -o zeigt Datei-Kommentare an
  950.      -n nur Namen anzeigen
  951.      -p volle Pfadnamen anzeigen und Ordner-Titel unterdrücken
  952.      -a zeigt das Alter aller Dateien im Format Tage Stunden:Minuten an
  953.      -i identifiziert jede Datei, zeigt den Typ statt des Datums
  954.         Siehe Kapitel XIV CLASSES
  955.      -v summiert rekursiv alle Längen der Dateien in einem Ordner
  956.      -l sortiert Dateien nach deren Länge, längste zuerst.
  957.      -t sortiert Dateien nach deren Zeit, neueste zuerst.
  958.      -k sortiert Dateien nach deren Klasse
  959.      -b sortiert die Dateien rückwärts
  960.      -g gibt Ordner am Anfang aus
  961.      -e gibt Ordner am Ende aus
  962.      -u es müssen genau zwei Ordner gegeben sein. Zeigt Dateien,
  963.         die nur im ersten Ordner, in beiden oder im Zweiten vorkommen
  964.      -z wählbares Ausgabeformat
  965.  
  966.     Zeigt einen Ordner mit angegebenen Dateien. Voreingestellte Ausgabe
  967.      zeigt Datum, Sicherheits-Bits, Block-Grösse, Byte-Grösse und gesammten
  968.      Platzverbrauch an.
  969.     Sicherheits-Bits beinhalten neue 1.2/1.3 Bits (siehe protect) und
  970.      ein 'c'-Bit welches anzeigt, das diese Datei einen Kommentar hat.
  971.     Dateien werden alphabetisch sortiert, ohne auf Gross-/Klein-Schreibung
  972.      zu achten. Ordner werden rot ausgegeben (ausser bei -c).
  973.     Dir beachtet die Breite des Fensters.
  974.  
  975.     Die lformat-Zeichenkette wird verwendet, um ein eigenes Ausgabeformat
  976.      zu erstellen. Alles andere gilt nicht. Die Zeichenkette kann folgende
  977.      Zeichen enthalten:
  978.      %a Alter        %l LF wenn Kommentar   %s Grösse
  979.      %b Block-Grösse     %m Multi-Kolonne       %t Zeit
  980.      %c c-Bit (Komment.) %n Name        %u Grösse in K
  981.      %d Datum        %o Kommentar       %v Ord. Grö. in engl.
  982.      %f hsparwed Bits    %p Name mit Pfad       %w Ord. Grö. in Kb
  983.      %i d-Bit f. Ord.    %q Name mit '/'    %x Übersetztes Datum
  984.      %k Klasse (Art)     %r Grösse in engl.
  985.  
  986.     Zwischen dem '%' und dem bezeichnenden Buchstaben kann auf Wunsch
  987.      eine Feld-Weite angegeben werden. Wenn die Zahl von einem '-'
  988.      angeführt wird, so wird der Feld-Inhalt linksbündig gesetzt. Bei
  989.      einem Punkt wird der Inhalt bei Bedarf auf die Feld-Weite gekürzt.
  990.      Wenn die Format-Zeichenkette ein %m enthält, wird Cshell versuchen,
  991.      mehr als einen Eintrag auf einer Zeile auszugeben. Die Kolonnenbreite
  992.      ist die Feld-Weite des %m-Eintrages. Wenn dieser fehlt, wird die
  993.      Breite der ersten Datei angenommen. Wenn eine Datei länger ist,
  994.      werden zwei Kolonnen verwendet.
  995.  
  996.     DISKCHANGE
  997.     Gebrauch : diskchange Gerät
  998.     Beispiel:    diskchange df2: # das externe 5.25" LW wurde
  999.                        gewechselt
  1000.  
  1001.     Wie AmigaDOS diskchange. Sollte nur bei physikalisches Geräten
  1002.      angewendet werden.
  1003.  
  1004.     ECHO
  1005.     Gebrauch : echo [-en] Zeichenfolge
  1006.     Beispiel : echo hi there
  1007.     Ergebnis : hi there
  1008.  
  1009.     Gibt die gegebene Zeichenfolge wieder. Wenn '-n' angegeben wurde, wird
  1010.      kein Wagenrücklauf angefügt. Mit '-e' geht die Ausgabe auf die
  1011.      Standardausgabe.
  1012.  
  1013.     ELSE
  1014.     Gebrauch : else ; Kommando
  1015.     Beispiel : if -f fasel.c ; else ; echo "Nicht da" ; endif
  1016.  
  1017.     Die Else-Anweisung muss von einer IF-Bedingung angeführt werden.
  1018.  
  1019.     ENDIF
  1020.     Gebrauch : endif
  1021.  
  1022.     Das Ende einer If-Anweisung.
  1023.  
  1024.     Achtung, wenn von einer Stapeldatei mit unterminierten IF-
  1025.      Anweisungen zurückgekehrt wird, und das letzte IF falsch war,wird der
  1026.      Prompt in einen Unterstrich ('_') verwandelt, und keine Anweisungen
  1027.      werden ausgeführt bis 'endif' eingegeben wird.
  1028.  
  1029.     ERROR
  1030.     Gebrauch : error n
  1031.  
  1032.     Generiert einen Rückgabewert (Fehlerkode) n.
  1033.  
  1034.     EXEC
  1035.     Gebrauch : exec [-i] Kommando [Argumente]
  1036.     Beispiel : set cmd "dir ram:"
  1037.            exec $cmd  # würde ohne exec nicht funktionieren
  1038.  
  1039.     Führt das angegebene Kommando aus. 'exec Kommando' ist gleichbedeutend
  1040.      zu 'Kommando', nur können Variablen angegeben werden, um Kommandonamen
  1041.      anzugeben.
  1042.     Achtung, die Kommandozeile wird ZWEIMAL interpretiert! Beispiele:
  1043.      set a dir ram:; exec $a # richtig
  1044.      set a mkdir; exec $a "Mein Ordner" # falsch! Macht 2 Ordner.
  1045.  
  1046.     Exec gibt den Wert zurück, den das auzuführende Kommando zurückgibt,
  1047.      es sei denn die Option '-i' (ignorieren) ist gesetzt, was immer 0
  1048.      ergibt.
  1049.  
  1050.     FAULT
  1051.     Gebrauch : fault Fehler1 .. FehlerN
  1052.     Beispiel : fault 205 212
  1053.  
  1054.     Wie AmigaDOS fault, gibt angegebene Fehlermeldungen zurück.
  1055.  
  1056.     FILENOTE
  1057.     Gebrauch : filenote Datei1 .. DateiN Kommentar
  1058.            filenote -s Datei1...DateiN
  1059.  
  1060.     Die erste Form setzt die AmigaDOS-Kommentarzeile der genannten Datei.
  1061.     Die zweite Form zeigt die Kommentare der genannten Dateien an.
  1062.  
  1063.     FLIST
  1064.     Gebrauch : flist
  1065.  
  1066.     Listet die Dateinummern der Dateien, die durch open geöffnet wurden.
  1067.     Siehe OPEN und CLOSE.
  1068.  
  1069.     FLTLOWER
  1070.     Gebrauch : fltlower
  1071.     Beispiel : dir | fltlower
  1072.     Oder : fltlower <readme
  1073.  
  1074.     Filterbefehl. Wandelt alphanumerische Texte in Kleinschrift.
  1075.  
  1076.     FLTUPPER
  1077.     Das gleiche wie fltlower, nur dieses wandelt in Grossschrift.
  1078.  
  1079.     FOREACH
  1080.     Gebrauch : foreach [-v] VarName ( Zeichenkette ) Kommando
  1081.     Beispiel : foreach i ( a b c d ) "echo -n $i;echo \" ok. \""
  1082.     Ergebnis : a ok.
  1083.            b ok.
  1084.            c ok.
  1085.            d ok.
  1086.  
  1087.     Die Zeichenkette wird in Argumente aufgeteilt. Jedes Argument wird der
  1088.      Reihe nach der Variablen 'VarName' zugewiesen und 'Kommando' wird aus-
  1089.      geführt. Mehrere Kommandos sollen in Anführungszeichen gesetzt werden.
  1090.  
  1091.     Foreach ist sehr nützlich für die Interpretation von Argumenten in
  1092.      einem Alias.
  1093.  
  1094.     Beispiel:
  1095.      alias showme "foreach i ( *.pic ) viewilbm $i"
  1096.  
  1097.     Unter der Annahme, dass sich a.pic und b.pic im aktuellen Ordner
  1098.      befinden, wird folgendes passieren:
  1099.       viewilbm a.pic
  1100.       viewilbm b.pic
  1101.  
  1102.     Das Flag -v sorgt dafür, dass die Argumente angezeigt werden, wann
  1103.      immer ein Kommando ausgeführt wird. Alle 'for...'-Befehle können mit
  1104.      CTRL-D abgebrochen werden.
  1105.  
  1106.     FOREVER
  1107.     Gebrauch : forever Kommando
  1108.     oder :     forever "Kommando1;...;KommandoN"
  1109.  
  1110.     Die angegebenen Befehle werden immer und immer wieder ausgeführt. Für
  1111.      immer. Die Ausführung stoppt, wird CTRL-C oder CTRL-D gedrückt, oder
  1112.      wenn die Kommandos einen Fehler liefern.
  1113.  
  1114.     FORLINE
  1115.     Gebrauch : forline Variable Dateiname Kommando
  1116.     oder :     forline Variable Dateiname "Kommando1;...;KommandoN"
  1117.     Beispiel : forline i RAM:temp "echo line $_linenum=$i"
  1118.  
  1119.     Für jede ASCII-Zeile, angegebener Dateien, werden die angeführten
  1120.      Befehle ausgeführt und Variable zeigt auf Zeileninhalt. Die System-
  1121.      Variable _linenum kann überprüft werden, um die Nummer der gerade
  1122.      gelesenen Zeile zu finden.
  1123.      Wenn die Standard-Eingabe (STDIN, Grossschreibung beachten) als
  1124.      Eingabe angegeben wird, dann werden die Zeilen von der
  1125.      Standard-Eingabe gelesen, also Tastatur oder Pipe.
  1126.  
  1127.     FORNUM
  1128.     Gebrauch : fornum [-v] Variable n1 n2 Kommando
  1129.     oder :     fornum [-v] -s Var n1 n2 SchrittWeite Kommando
  1130.     Beispiel : fornum -v x 1 10 echo $x
  1131.     oder :     fornum -s x 10 1 -1 echo $x # zählt rückwärts
  1132.  
  1133.     Führt Kommando für jeden numerischen Wert von x zwischen n1 und n2 aus.
  1134.      Wenn mehr als ein Kommando angeführt ist, oder umgeleitet wurde, dann
  1135.      Befehle in Anführungszeichen setzen.
  1136.      Mit Option '-v' werden die laufenden Zahlen ausgegeben.
  1137.      Mit Option '-s' kann eine Schrittweite angegeben werden, wenn diese
  1138.      negativ ist, wird rückwärts gezählt.
  1139.  
  1140.     GETENV
  1141.     Gebrauch : getenv [Shellvar] envvar
  1142.  
  1143.     Holt den Wert einer ARP- oder ENV:-Variablen (ARP-Liste wird zuerst
  1144.      durchsucht) und speichert ihn in der Shell-Variablen 'shellvar' ab.
  1145.     Wenn Shellvar ausgelassen wird, wird der Wert der ENV:-Variablen auf
  1146.      der Standard-Ausgabe ausgegeben.
  1147.  
  1148.     GOTO
  1149.     Gebrauch : goto label
  1150.     Beispiel : label start
  1151.            echo "Am Start"
  1152.            dir ram:
  1153.            goto start
  1154.  
  1155.     Fahre bei der angegebenen Marke (label) weiter. Dieses Kommando
  1156.      kann nur in einer Stapeldatei verwendet werden. Die Sprungmarken
  1157.      können sich vor oder nach dem GOTO Kommando befinden. Es
  1158.      ist auch erlaubt aus IF's rauszuspringen.
  1159.  
  1160.     HEAD
  1161.     Gebrauch : head Dateiname [Wert]
  1162.     Beispiel : head readme 20
  1163.  
  1164.     Zeige "Wert" erste Zeilen der Datei "Dateiname". Wenn "Wert" nicht
  1165.      angegeben wurde, werden die ersten 10 Zeilen angezeigt.
  1166.      Meist interessant in Verbindung mit Pipe.
  1167.  
  1168.     HELP
  1169.     Gebrauch : help
  1170.     Beispiel : help
  1171.  
  1172.     Zeigt die Liste aller Befehle (KEIN Argument). Die Befehlsliste
  1173.      wird in der Reihenfolge angezeigt, in welcher sie auch durchsucht
  1174.      wird. Das hat zur Folge, daß, wenn nur ein Teil eines Kommandonamens
  1175.      eingegeben wird, das erste Kommando in der Liste, der mit diesem
  1176.      Teil beginnt, ausgeführt wird. Grundsätzlich sollte ein genügend
  1177.      grosser Teil angegeben werden damit die Wahl eindeutig ist.
  1178.  
  1179.     HISTORY
  1180.     Gebrauch : history [Zeichenkette]
  1181.     Beispiel : history
  1182.  
  1183.     Zeigt eine mit Nummern versehene Liste der zuletzt eingegebenen
  1184.      Befehle. Die Grösse dieser Liste kann durch die Variable _history
  1185.      eingestellt werden. Wenn eine 'Zeichenkette' angegeben wurde, werden
  1186.      nur diejenigen Einträge angezeigt, auf die diese Zeichenkette
  1187.      zutrifft.
  1188.  
  1189.     HOWMANY
  1190.     Gebrauch : howmany
  1191.  
  1192.     Dieses Kommando zeigt an, wieviele Shells momentan im System am
  1193.      laufen sind.
  1194.  
  1195.     HTYPE
  1196.     Gebrauch : htype [-r] Datei1 .. Datein
  1197.  
  1198.     Zeigt den Inhalt der angegegbenen Dateien im Hexadezimal
  1199.      (sedesimal) und ASCII Format an (entspricht dem Ergebnis des
  1200.      CLI Befehls "Type Datei opt h"). Speziell nützlich zum
  1201.      Anschauen von Binärdateien. Die Option '-r' zeigt alle Dateien
  1202.      in einem Ordner an.
  1203.  
  1204.     IF
  1205.     Gebrauch : if [-n] Argument Bedingung Argument ;
  1206.     oder     : if [-n] Argument
  1207.     oder     : if [-n] -f Datei
  1208.     oder     : if [-n] -d Datei/Ordner
  1209.     oder     : if [-n] -m
  1210.     oder     : if [-n] -t Datei Datei1 .. DateiN
  1211.     oder     : if [-n] -r RPN-Ausdruck
  1212.     oder     : if [-n] -v varname
  1213.     oder     : if [-n] -o Zeichen arg ... arg
  1214.  
  1215.     Testet, ob ein Argument eine Bedingung in Bezug auf ein zweites
  1216.      Argument erfüllt. Als Bedingungen sind zugelassen:
  1217.      <, >, =, und Kombinationen.
  1218.      Demzufolge bedeutet <> "ungleich", >= "grösser oder gleich",
  1219.      und so weiter...
  1220.     Wenn die Argumente nicht numerische Argumente sind, werden sie als
  1221.      Zeichenkette verglichen.
  1222.      Normalerweise wird als Argument entweder eine Konstante oder eine
  1223.      Variable ($varname) verwendet.
  1224.  
  1225.     Die zweite Form testet auf Vorhandensein des Arguments. Wenn das
  1226.      Argument eine Leerzeichenkette "" ist, ist die Bedingung FALSCH, sonst
  1227.      WAHR.
  1228.  
  1229.     Die dritte Form mit der Option -f testet auf Existieren der
  1230.      angegebenen Datei.
  1231.  
  1232.     Option -d testet die Art des angegebenen Objekts: Wenn es sich um
  1233.     einen Ordner handelt, ist die Bedingung WAHR, wenn es eine Datei
  1234.     ist oder nicht vorhanden, ist die Bedingung FALSCH.
  1235.  
  1236.     Option -m kann verwendet werden, um das Vorhandensein von
  1237.     FAST-Memory zu prüfen.
  1238.     Beispiel (kann im login.sh Datei eingebaut werden):
  1239.     if -m; resident -d lc1 lc2 blink; endif
  1240.  
  1241.     Wird die Form -t verwendet, werden Datum und Zeit der ersten Datei
  1242.      mit allen anderen verglichen; wenn die erste Datei jünger als alle
  1243.      anderen, ist die Bedingung FALSCH, sonst WAHR. Wenn
  1244.      eine Datei nicht existiert, wird sie als älter angenommen.
  1245.      Diese Option ist speziell nützlich um 'makefiles' ohne ein
  1246.      eigentliches 'MAKE' Programm zu erstellen.
  1247.      Beispiel:
  1248.       if -t test.o test.asm test.i ; asm -o test.o test.asm ; endif
  1249.  
  1250.     Die Option -r berechnet einen gegebenen RPN-Ausdruck (siehe RPN
  1251.      für genauere Erläuterung): Wenn der Wert zuoberst auf dem RPN
  1252.      Stapel 0 ist, gilt die Bedingung als FALSCH, sonst WAHR.
  1253.  
  1254.     Die Option -o testet auf eine Option 'Zeichen' im Rest des
  1255.      Arguments.
  1256.       Beispiel: if -o r -rp ram:comm1.c ergibt WAHR.
  1257.  
  1258.     Option -n kehrt das Ergebnis der Bedingung um.
  1259.      Um zu testen, ob eine bestimmte Variable definiert wurde, kann
  1260.      'if -v varname' verwendet werden.
  1261.  
  1262.     Wenn das Kommando IF in der Kommandozeile verwendet wird und die
  1263.      Bedingung FALSCH war, wird als Prompt solange ein '_' verwendet
  1264.      und alle eingegebenen Befehle ignoriert, bis ein ELSE oder ENDIF
  1265.      Kommando ausgeführt wird.
  1266.  
  1267.     INC
  1268.     Gebrauch : inc VarName [Wert]
  1269.     Beispiel : set abc 5;inc abc 5;echo $abc
  1270.         Ergebnis : 10
  1271.  
  1272.     Erhöht den Inhalt einer Variable um den angegebenen Wert (Wenn
  1273.      nichts angegeben wurde: um 1) und schreibt das Resultat als
  1274.      ASCII-Zeichenkette zurück in die Variable 'VarName'.
  1275.  
  1276.     INFO
  1277.     Gebrauch : info [Path1 ... PathN]
  1278.  
  1279.     Wenn INFO ohne Argumente aufgerufen wird, gibt es Information
  1280.      über alle logischen und physikalischen Geräte (devices) aus.
  1281.      Werden ein oder mehrere Pfade angegeben, wird nur die Information
  1282.      über die dazugehörigen Geräte angezeigt.
  1283.  
  1284.     INPUT
  1285.     Gebrauch : input [-s] Var1 ... VarN
  1286.     Beispiel : input abc
  1287.  
  1288.     Schreibt Daten von der Standard-Eingabe (oder einer umgeleiteten
  1289.      Ausgabe, oder von einer Pipe) in eine Variable. Die nächste Zeile,
  1290.      die als Eingabe kommt, wird in Worte aufgeteilt (wenn sie nicht in
  1291.      Anführungszeichen gesetzt wurde) und in die Variable geschrieben.
  1292.      Falls die Option -s eingeschalten wurde, wird die Eingabezeile als
  1293.      Ganzes genommen, mitsamt der Leerzeichen. Option -r schaltet die
  1294.      Eingabekonsole in der Einzelzeichenmodus bevor die Daten
  1295.      eingelesen werden (d.h. es wird nicht auf ein abschliessendes
  1296.      RETURN gewartet). Diese Option muss mit Vorsicht eingesetzt
  1297.      werden.
  1298.  
  1299.     JOIN
  1300.     Gebrauch : join [-r] Datei1..DateiN Zieldatei
  1301.     Beispiel : join teil1 teil2 teil3 TeilGanz
  1302.  
  1303.     Verbindet die angegebenen Dateien und erzeugt 'Zieldatei'. Wenn
  1304.      'Zieldatei' schon existiert, wird eine Fehlermeldung angezeigt und
  1305.      das Kommando wird abgebrochen, es sei denn Option -r (ersetze =
  1306.      replace) wurde angegeben.
  1307.  
  1308.     KEYMAP
  1309.     Gebrauch : keymap nummer {taste=funktion}
  1310.     Beispiel : keymap 0 1030=4 1032=12
  1311.  
  1312.     Definiert eine Tastenbelegung für Editiermodus der Csh
  1313.      Kommandozeile. Siehe auch Kapitel XV.
  1314.  
  1315.     LABEL
  1316.     Gebrauch : label name
  1317.  
  1318.     Setzt eine Sprungmarke an dieser Stelle. Wird in Stapeldateien
  1319.      verwendet, dann kann mit GOTO zu einer solchen Marke gesprungen
  1320.      werden.
  1321.  
  1322.     LINECNT
  1323.     Ein Filter das die Anzahl der Zeilen zählt, die es als Eingabe
  1324.      (Standard-Eingabe) erhält und schreibt diese Anzahl dann auf die
  1325.      Standard-Ausgabe.
  1326.  
  1327.     LOCAL
  1328.     Gebrauch : local [Var1 ... VarN]
  1329.  
  1330.     Generiert eine oder mehrere lokale Variablen. Diese Variablen
  1331.      verschwinden am Ende des 'alias' oder der Stapeldatei und können
  1332.      nicht von anderen 'alias' oder Stapeldateien angesprochen werden.
  1333.     Wird kein Argument angegeben, zeigt das Kommando alle lokalen
  1334.      Variablen und deren Inhalt an.
  1335.  
  1336.     LS
  1337.     Gleichbedeutend zum Kommando DIR.
  1338.  
  1339.     MD
  1340.     Gleichbedeutend zum Kommando MKDIR.
  1341.  
  1342.     MAN
  1343.     Gebrauch : man Kommando1 ... KommandoN
  1344.     Beispiel : man mkdir
  1345.  
  1346.     Zeigt Information über ein Shell Kommando oder andere
  1347.      Schlüsselwörter an. Dies beinhaltet insbesondere alle speziellen
  1348.      _variablen, sowie verschiedene Schlüsselwörter: SUCHMUSTER, PIPES,
  1349.      EDITIEREN, START und andere.
  1350.     Das spezielle Alias 'manlist' kann verwendet werden, um eine Liste
  1351.      ALLER Schlüsselwörter zu erhalten, die MAN unterstützt.
  1352.  
  1353.     Die Variable _man muss auf den Pfad der .doc Datei gesetzt werden:
  1354.      set _man dh1:docs/aliases.doc Csh:Csh.deutsch.doc
  1355.  
  1356.     Um eigene .doc Dateien zu erstellen, müssen vor alle Schüsselwörter
  1357.      vier (4) Leerzeichen gestellt werden. 'man' zeigt dann alle Zeilen
  1358.      bis es auf eine Zeile trifft, deren erste Zeichen ein alpha-
  1359.      numerisches ist oder vier vorangestellte Leerzeichen sind.
  1360.  
  1361.     MEM
  1362.     Gebrauch : mem [-cfqu]
  1363.  
  1364.     Optionen:
  1365.      -c zeigt den freien Speicher im CHIP-Memory Bereich
  1366.      -f zeigt den freien Speicher im FAST-Memory Bereich
  1367.      -q gibt nur die Zahl des freien Speichers ohne Text aus
  1368.      -s merkt sich die Menge des momentan freien Speichers
  1369.      -r zeigt den freien Speicher relativ zum letzten gemerkten Zustand.
  1370.      -l räumt den Speicher auf, macht soviel Speicher wie möglich frei.
  1371.  
  1372.     MENU
  1373.     Gebrauch : menu [-n] [ Titel Menupunkt1 ... MenupunktN ]
  1374.     Beispiel : menu Shell JrComm,,j Rename,"rename ",r quit
  1375.  
  1376.     Hängt ein zusätzliches Pulldownmenu an das aktive Shell Fenster.
  1377.     Bis zu sechs Menus mit je 16 Menupunkten können installiert
  1378.      werden.
  1379.  
  1380.     Wenn als 'Menupunkt' nur eine Zeichenkette angegeben wurde, wird ein
  1381.      Menupunkt mit demselben Namen erstellt. Bei der Anwahl eines
  1382.      solchen Menupunktes wird diese Zeichenkette dann beim Prompt eingefügt
  1383.      und ausgeführt.
  1384.  
  1385.     Wenn ein Komma mit einer nachfolgenden zweiten Zeichenkette angegeben
  1386.      wurde, wird diese zweite Zeichenkette als Kommando eingefügt und
  1387.      ausgeführt. Bei dieser Variante muss ein ^M (RETURN) von Hand
  1388.      hinzugefügt werden, falls das Kommando direkt ausgeführt werden
  1389.      soll.
  1390.  
  1391.     Wenn auch noch ein zweites Komma mit einem nachfolgenden
  1392.      Zeichen folgt, wird dieser als Tastenkombination für den
  1393.      Menupunkt genommen. (In Zukunft wird Gross-/Kleinschreibung eine
  1394.      Rolle spielen, deshalb muss Kleinschrift verwendet werden!)
  1395.  
  1396.     Wenn aus irgend einem Grund das Pulldownmenu kaputtgegangen ist,
  1397.      kann einfach ein 'menu' Kommando alleine ausgeführt werden.
  1398.  
  1399.     Option -n entfernt alle Menupunkte.
  1400.     Als Beispiel ist Csh:menu.sh anzusehen.
  1401.  
  1402.     MKDIR
  1403.     Gebrauch : mkdir Name Name Name...
  1404.     Beispiel : mkdir df0:stoff
  1405.  
  1406.     Erstellt einen neueen Ordner.
  1407.  
  1408.     MV
  1409.     Gleichbedeutend zum Kommando RENAME.
  1410.     Es ist nicht möglich über Geräte hinweg Dateien zu bewegen, etwa
  1411.      von einer Partition auf eine andere. Ein solches Kommando kann
  1412.      mit einem Alias einfach simuliert werden
  1413.      (ohne Sicherheitsabfrage!):
  1414.       alias newmv "%f1%f2 copy $f1 $f2;rm $f1"
  1415.  
  1416.  
  1417.     OPEN
  1418.     Gebrauch : open Dateiname Dateimodus Dateinummer
  1419.     Beispiel : open RAM:data w 1
  1420.  
  1421.     Dieses Kommando erlaubt das Öffnen einer Datei, ein darauf folgendes
  1422.      Umleiten beliebig vieler Befehle in diese Datei und ein Schliessen
  1423.      der Datei zum Schluss.
  1424.     'Dateiname' ist ein gültiger AmigaDOS Dateiname, als 'Dateimodus'
  1425.      sind entweder "r" zum Lesen oder "w" zum Schreiben erlaubt,
  1426.     'Dateinummer' muss eine Zahl zwischen 1 und 10 sein.
  1427.     Um ein Programm von oder zu einer geöffneten Datei umzulenken, wird
  1428.      als Umleitungsdateiname ein Punkt '.' gefolgt von der 'Dateinummer'
  1429.      verwendet. Es sind nur 10 gleichzeitig geöffnete Dateien zulässig.
  1430.     Dazu ein komplettes Beispiel:
  1431.  
  1432.         open RAM:data w 1
  1433.         echo -n 2+2= >.1
  1434.         rpn 2 2 + . CR >.1
  1435.         close 1
  1436.         type RAM:data    # zeigt 2+2=4
  1437.  
  1438.     Siehe auch CLOSE, FLIST.
  1439.  
  1440.     PATH
  1441.     Gebrauch : path [-r] [Ordner1 ... OrdnerN]
  1442.  
  1443.     Ohne ein Argument gibt das Kommando die Liste aller AmigaDOS Pfade
  1444.      aus. Sonst wird 'Ordner' zum Pfad hinzugefügt, wobei
  1445.      Doppeleintragungen vermieden werden.
  1446.     Die Option '-r' löscht die gesamte (vorhandene) Pfadliste.
  1447.  
  1448.     PRI
  1449.     Gebrauch : pri Clinummer Pri
  1450.     Beispiel : pri 3 5   # Setzt Priorität von cli #3 auf 5
  1451.  
  1452.     Ändert die Priorität des angegebenen Tasks (Das PS Kommando kann
  1453.      dazu verwendet werden, die 'Clinummer' herauszufinden). Wenn als
  1454.      'Clinummer' 0 angegeben wurde, wird die Priorität des aktuellen
  1455.      Tasks (derjenige, der das Kommando ausführt) verändert. Dies ist
  1456.      sinnvoll für Stapeldateien.
  1457.  
  1458.  
  1459.     PROTECT
  1460.     Gebrauch : protect Datei1 ... DateiN [modus] flags
  1461.     Beispiel : protect MeineDatei +rwe
  1462.  
  1463.     Setzt AMIGADOS Sicherheits-Bits für die angegebenen Dateien.
  1464.     Mögliche Bits sind: h, s, p, a, r, w, e, d.
  1465.     (Siehe auch AmigaDOS Manual)
  1466.     Modus:
  1467.      + Setzt die angegebenen Flags (alle anderen bleiben)
  1468.      - Löscht die angegebenen Flags (alle anderen bleiben)
  1469.      = Setzt die angegebenen Flags (alle anderen werden gelöscht)
  1470.     Wenn kein Modus angegeben wird, wird '=' als Vorgabe-Modus angenommen.
  1471.     Das Archiv-Flag (a), wird jeweils, sofern nichts anderes angegeben
  1472.      wurde, gelöscht.
  1473.  
  1474.     PS
  1475.     Gebrauch : ps [Kommandoname1 ... KommandonameN]
  1476.  
  1477.     Gibt einen Status über alle CLI Processe z.B:
  1478.  
  1479.     Proc Command Name    CLI Type    Pri.    Address    Directory
  1480.     * 1  Csh        Initial CLI      0     97b0    Stuff:shell
  1481.       2  clock        Background    -10     2101a8    Workdisk:
  1482.       3  emacs        Background      0     212f58    Stuff:shell
  1483.       4  VT100        Background      0     227328    Workdisk:
  1484.  
  1485.     Address ist die Speicheradresse des Tasks, Ordner ist der aktuelle
  1486.      Ordner des jeweiligen Commands (Kommandos). Der aktuelle
  1487.      CLI wird mit einem Stern in der ersten Spalte markiert.
  1488.  
  1489.     Optionen:
  1490.      -l Zeigt den kompletten Pfad der Kommandos
  1491.      -e Entfernt das Argument aus der Task-Liste (Wird übersprungen)
  1492.  
  1493.     PWD
  1494.     Gebrauch : pwd
  1495.  
  1496.     Setzt die Variable _cwd auf den aktuellen Pfad und zeigt diesen
  1497.      an.
  1498.  
  1499.     QSORT
  1500.     Gebrauch : qsort [-r] <Eingabe >Ausgabe
  1501.  
  1502.     Dieses Filter sortiert die 'Eingabe' nach 'Ausgabe'.
  1503.     Die Option -r sortiert rückwärts.
  1504.  
  1505.     QUIT
  1506.     Gebrauch : quit
  1507.  
  1508.     Verlässt die Shell. Achtung, wurde die Csh von der normalen
  1509.      AmigaShell in shell-startup gestartet, werden jetzt erst die nach
  1510.      'Csh' folgenden Befehle gestartet.
  1511.  
  1512.     RBACK
  1513.     Gebrauch : rback Kommando
  1514.  
  1515.     Startet ein Kommando in einem Hintergrund-Process. Ausgaben werden
  1516.      NICHT sichtbar. Abfragen des Kommandos, können nicht entgegengenommen
  1517.      werden. rback entspricht 'run command >NIL: <NIL:'. Anstatt rback,
  1518.      ist es möglich am Ende der Zeile ein '&' anfügen. Die Variable
  1519.      $_newproc enthält die CLINummer des neu gestarteten Processes.
  1520.  
  1521.     Achtung, rback kann keine internen Csh-Kommandos starten.
  1522.      Soll eine Unter-Shell gestartet werden, ist dies z.B. wie
  1523.      folgt zu geschehen : rback Csh -c "copy ram:temp prt:;rm ram:temp
  1524.  
  1525.     READFILE
  1526.     Gebrauch : readfile Variablenname [Dateiname]
  1527.  
  1528.     Lädt eine ASCII Datei und weist den Inhalt einer Variable zu.
  1529.      Jede Zeile wird zu einem Wort in der sich ergebenden Zeichenkette.
  1530.      Wenn keine Datei angegeben wird, wird von der Standard Eingabe
  1531.      gelesen.
  1532.  
  1533.     RENAME
  1534.     Gebrauch : rename QuellDatei ZielDatei
  1535.     oder     : rename Datei1 ... DateiN ZielOrdner
  1536.  
  1537.     Ermöglicht es, eine Datei umzubennen oder solche auf dem gleichen
  1538.      Gerät zu bewegen. Eine oder mehrere Dateien können in einen einzelnen
  1539.      Ordner verschoben werden.
  1540.     Das Archivierungs-Bit (a), wird bei diesem Vorgang gelöscht.
  1541.     Suchmuster sollten aus Sicherheitsgründen vermieden werden.
  1542.  
  1543.     RESIDENT
  1544.     Gebrauch : resident [-r][-d] [Datei]
  1545.     Beispiel : resident lc1 lc2 blink    # Lädt diese Dateien resident
  1546.            resident -d lc1 lc2 blink # Lädt erst resident,wenn nötig
  1547.            resident -r lc1 lc2 blink # Löscht residente Dateien
  1548.            resident                  # Listet residente Dateien
  1549.  
  1550.     Dies ist das ARP Resident Kommando. Kommandos werden von der Shell
  1551.      zuerst dort gesucht, bevor in externen Geräten gesucht wird.
  1552.     Nur wirkliche Programme können resident geladen werden. Bei weiteren
  1553.      Fragen zu resident, ist bitte das ARP Handbuch zu lesen.
  1554.     Option -d ist sehr praktisch: So kann in der Start-Datei
  1555.      folgenden Eintrag gemacht werden:
  1556.       resident -d Datei1 .. DateiN
  1557.      Die Programme werden nicht sofort geladen, sondern nur wenn
  1558.      sie tatsächlich gestartet werden. Dies ist ein einfacher Weg,
  1559.      den Speicherverbrauch und die Start-Zeit zu Verkürzen.
  1560.     Die alte Option -a hat keine weitere Bedeutung mehr.
  1561.  
  1562.     RETURN
  1563.     Gebrauch : return [n]
  1564.     Beispiel : return 10
  1565.  
  1566.     Die Shell, oder eine Stapeldatei wird mit dem angegebenen Wert
  1567.      als Fehlerkode verlassen.
  1568.  
  1569.     RM
  1570.     Synonym zu delete
  1571.  
  1572.     RPN
  1573.     Gebrauch : rpn Ausdruck
  1574.     Beispiel : rpn 3 7 *    # Erigibt eine Ausgabe von 21
  1575.  
  1576.     Berechnet einen RPN (revers polish notation, siehe Fachliteratur)
  1577.      Ausdruck, dabei werden 32-Bit Variabeln verwendet.
  1578.      Nach der Berechung, schreibt RPN den Wert auf den Stack.
  1579.      Beispiel: "rpn $x 2 * | input x" Die Variable x hier verdoppelt.
  1580.      Implementierte Funktionen:
  1581.  
  1582.      + - * /    Triviale Ausdrücke; / ist eine integere Division.
  1583.      %        Modulo Operation z.B. "rpn 7 3 %" Ergibt 1
  1584.      & | ~        Bitweise UND, ODER, NOT Operatoren
  1585.      > < ==        Testet auf grösser-als, kleiner-als, gleich. Auch <=
  1586.             und >= sind erlaubt.
  1587.      !        Logische NICHT Operation
  1588.      DUP        Dupliziert Wert auf dem Stacks
  1589.      DROP        Löscht obersten Wert des Stacks
  1590.      SWAP        Tauscht Wert mit dem obersten auf dem Stack aus.
  1591.  
  1592.     Um keinen Konflikt mit den Ausgabeumlenkungs-Zeichen, > und < zu
  1593.      bekommen, müssen die Operatoren in diesem Fall zwischen
  1594.      Anführungszeichen "" stehen.
  1595.       3 2 ">"    # Ergibt 1, dies wird auf die Standardausgabe
  1596.             # gelenkt
  1597.  
  1598.     RUN
  1599.     Gebrauch : run Programm Argumente
  1600.     Beispiel : run emacs test.c
  1601.  
  1602.     Startet das Programm unter einem neuen Process.
  1603.     In der jetzigen Implementation des Kommandos run, kann die
  1604.      Ausgabe und die Eingabe des Programm nicht umgelenkt werden.
  1605.     Das Kommando ist nicht ganz zuverlässig: Gebrauch auf eigenes Risiko.
  1606.     $_newproc wird auf den Wert der CLI-Nummer des neuen Processes gesetzt
  1607.     Siehe auch rback
  1608.  
  1609.     RXREC
  1610.     Gebrauch : rxrec [portname]
  1611.  
  1612.     Generiert einen AREXX-Port mit spezifizierten Namen.
  1613.      Vorgabe ist "rexx_csh". Anschliessend geht die Shell in einen
  1614.      Warte-Modus, in der sie auf Kommandos wartet.
  1615.  
  1616.     Achtung, der einzige Weg diesen Status zu verlassen, besteht darin,
  1617.      auf den angegebenen ARexx-Port die Mitteilung 'bye' zu senden.
  1618.  
  1619.     Beispiel:
  1620.     Eine weitere Cshell in einem neuen CLI öffnen.
  1621.     Dort eingeben:
  1622.         rxrec
  1623.  
  1624.     Die Shell gibt nun keine Antwort auf Kommandos, denn diese
  1625.      wartet auf ARexx-Mitteilungen (port "rexx_csh").
  1626.     Auf der anderen Cshell bitte eingeben:
  1627.         rxsend rexx_csh "dir ram:"
  1628.     Es wird auf der neuen CShell der Inhalt des Ordners ram: ausgegeben.
  1629.     Um die neue CShell wieder freizugeben, ist
  1630.         rxsend rexx_csh bye
  1631.      einzugeben.
  1632.     Die neue CShell ist nun wieder im (normalen) Kommando-Modus
  1633.  
  1634.     RXSEND
  1635.     Gebrauch : rxsend [-lr] PortName Kommando1 ...KommandoN
  1636.  
  1637.     Sendet Kommandos zu einem AREXX-Port.
  1638.     Jedes Kommando wird als einzelnes Kommando gesendet!
  1639.  
  1640.     Es werden keine Zusätze benötigt, um rxrec zu starten, nur
  1641.      ein Programm mit dem richtigen AREXX-Port.
  1642.  
  1643.     Ein Beispiel ist CygnusEdProfessional: Hier als Beispiel ein Kommando
  1644.      das den CED wiederbelebt (falls im Wartemodus), eine Datei
  1645.      namens test.c lädt, und ein Sprung zur Zeile 20 macht:
  1646.  
  1647.         rxsend rexx_ced "cedtofront" "open test.c" "jmp to line 20"
  1648.         # rexx_ced ist der Name des AREXX Port's für CygnusEd
  1649.  
  1650.     Die Option -r setzt die Variable _result auf den Rückgabe-Wert des
  1651.      ausgeführten AREXX Kommandos.
  1652.  
  1653.     Die Option -l sendet die ganze Zeile als EIN Kommando
  1654.  
  1655.     Mehr Details sind dem jeweiligen Applikations-Handbuch zu entnehmen.
  1656.  
  1657.     SEARCH
  1658.     Gebrauch : search [-abcefnqrvw] Datei1 ... DateiN Zeichenkette
  1659.  
  1660.     Durchsucht die angegebenen Dateien nach einer Zeichenkette.
  1661.     Nur jeweils eine Zeile, in der die Zeichenkette gefunden worden ist,
  1662.      wird angezeigt.
  1663.  
  1664.     Fals als Dateiname STDIN (Grossbuchstaben) angegeben wird, wird von
  1665.      der Standard-Eingabe gelesen. Somit kann mit Hilfe von PIPE's
  1666.      ein Datenstrom durchsucht werden.
  1667.  
  1668.     Beispiel:
  1669.      strings MeinProgramm | search STDIN .library
  1670.      Zeigt alle Libraries die in "MeinProgramm" verwendet werden.
  1671.  
  1672.     Search ist sehr schnell. Wenn keine der Optionen -w, -e und STDIN
  1673.      angegeben wurden wird die Datei in den Speicher geladen.
  1674.  
  1675.     Optionen:
  1676.      -a (abort, Abbruch) Die Ausgabe wird angehalten, beim ersten Vorkommen
  1677.         des Suchmusters.
  1678.      -b (Binary, binär) Zeigt den Byte-Offset der gefundenen Zeichenkette
  1679.         In Kombination mit -n, werden nur Offset's Angezeigt.
  1680.      -c (case, Gr./Kl.) Es wird strikt abhängig von Gross/Kleinbuchstaben
  1681.         durchsucht.
  1682.      -e (Exklusiv) Zeigt Zeilen in denen die Zeichenkette NICHT vorkommt
  1683.      -f (files, Dateien) Zeigt nur den Namen der Dateien in dem die
  1684.         Zeichenkette gefunden wurde.
  1685.      -l (left, Links) Das Suchmuster beginnt am Anfang einer Zeile (dies
  1686.         ist schneller als Suchmuster zu nutzen)
  1687.      -n (number, Nummer) Schaltet die Zeilen-Nummerierung ab.
  1688.      -o (only, nur) Sucht nur ganze Wörter.
  1689.      -q (quiet, still) Unterdrückt das Ausgeben der Dateinamen.
  1690.      -r (Rekursiv) Wenn ein Ordner angegeben wird, werden alle
  1691.         Dateien und Ordner rekursiv durchsucht.
  1692.      -v (verbose, Kommentar) Zeigt jeden Dateinamen auf einer separaten
  1693.         Zeile. Dies wird automatisch eingeschaltet, wenn der search
  1694.         umgeleitet wurde.
  1695.      -w (wild card, Suchmuster) Siehe Unten.
  1696.  
  1697.  
  1698.     Bemerkungen zu Suchmustern:
  1699.     - Benutzt Shell-Standardmuster.
  1700.     - Alle Standard ARP Suchzeichen sind verwendbar: * ? [] () | ~ ' #
  1701.     - Die ganze Zeile muss eine Such-Zeichenkette ergeben.
  1702.     - Die Zeichenkette muss zwischen Anführungszeichen stehen! (!!)
  1703.  
  1704.     Beispiel:
  1705.  
  1706.     search -cr df0:include ACCESS
  1707.      Findet alle Vorkommen von ACCESS (gross geschrieben)in allen Dateien
  1708.      im df0:include Ordner.
  1709.  
  1710.     search -w shell.h "'#define*"
  1711.      Zeigt nur Zeilen einer Datei in der der Anfang mit #define
  1712.      beginnt. Das Zeichen ' muss vor # stehen, da # ein Spezial-
  1713.      Zeichen ist.
  1714.  
  1715.     SET
  1716.     Gebrauch : set [VarName] [Zeichenkette]
  1717.     Beispiel : set abc hallo
  1718.  
  1719.     Set ohne Argumente gibt Liste aller aktuellen Variablen und deren
  1720.      Inhalt aus.
  1721.     Set mit einem Argument zeigt den Inhalt der angegebenen Variable.
  1722.     Wird ein Name und eine Zeichenkette angegeben, so wird die
  1723.      Zeichenkette in der spezifizierten Variablen gespeichert.
  1724.  
  1725.     Siehe auch Abschnitt für spezielle _variablen.
  1726.  
  1727.     SETENV
  1728.     Gebrauch : setenv UmgVar Wert
  1729.  
  1730.     Setzt eine ENV: (Environment, Umgebung) Variable auf angebenen Wert.
  1731.      Der Wert muss in Anführungszeichen gesetzt werden, enthält er
  1732.      Leerzeichen.
  1733.  
  1734.     SLEEP
  1735.     Gebrauch : sleep Zeitwert
  1736.     Beispiel : sleep 10
  1737.  
  1738.     Für 'Zeitwert' - Sekunden warten, oder aber solange bis ^C gedrückt
  1739.      wird.
  1740.  
  1741.     SPLIT
  1742.     Gebrauch : split QuellVar ZielVar1 ... ZielVarN
  1743.  
  1744.     Weist ein Wort in QuellVar jedem ZielVar zu, den Rest von QuellVar
  1745.      an das letzte Zielvar.
  1746.     Achtung, Variablen-NAMEN angeben, nicht Variablen.
  1747.  
  1748.     STACK
  1749.     Gebrauch : stack [Wert]
  1750.     Beispiel : stack 8000
  1751.  
  1752.     Ändert den Standard Stack für den benutzten CLI. Ohne Parameter
  1753.      wird die aktuelle Stackgrösse ausgegeben.
  1754.     Jedes Programm benutzt eine gewisse Menge des Stacks. Ein Stack
  1755.      ist ein Speicherraum, in dem z.B. Variablen gespeichert werden können.
  1756.     Der nötige Verbrauch ist der jeweiligen Applikationsbeschreibung
  1757.      zu entnehmen.
  1758.     Ein normaler Stack bewegt sich zwischen 4000 und 25000 Bytes.
  1759.     Die Shell selber braucht ca. 8000 Bytes Stack für Variablen,
  1760.      diverse Speicheroperationen und PIPES.
  1761.  
  1762.     STRHEAD
  1763.     Gebrauch : strhead VarName MarkierZeichenkette
  1764.     Beispiel : strhead x . blafasel.bas # Setzt x auf "blafasel"
  1765.  
  1766.     Löscht alles ab dem MarkierZeichen in der 'Zeichenkette' und
  1767.      weist das Ergebnis der Variablen 'VarName' zu.
  1768.  
  1769.     STRINGS
  1770.     Gebrauch : strings Datei1..DateiN MinLänge
  1771.     Beispiel : strings c:dir c:list shell 7
  1772.  
  1773.     Gibt alle Zeichenketten die in den angegebenen Dateien (normalerweise
  1774.      binär) vorkommen aus, die mindestens die Länge MinLänge haben.
  1775.  
  1776.     STRLEFT
  1777.     Gebrauch : strleft VarName Zeichenkette n
  1778.     Beispiel : strleft x LangZeichenkette 5 # Setzt x auf "LangZ"
  1779.  
  1780.     Weist die linken n Zeichen einer Zeichenkette der Variablen
  1781.      VarName zu.
  1782.  
  1783.     STRLEN
  1784.     Gebrauch : strlen VarName Zeichenkette
  1785.     Beispiel : strlen x Hallo # setzt x auf "5"
  1786.  
  1787.     Weist die Länge einer Zeichenkette einer Variablen VarName zu.
  1788.  
  1789.     STRMID
  1790.     Gebrauch : strmid VarName Zeichenkette n1 [n2]
  1791.     Beispiel : strmid x LangZeichenkette 5 3 # setzt x auf "Zei"
  1792.  
  1793.     Nimmt n2 Zeichen der Zeichenkette, ab der Stelle n1, und weist sie
  1794.      der Variablen VarName zu. Wird n2 weggelassen, wird die ganze
  1795.      Zeichenkette ab n1 zugewiesen.
  1796.  
  1797.     STRRIGHT
  1798.     Gebrauch : strright VarName Zeichenkette n
  1799.     Beispiel : strright x LangZeichenkette 12 # setzt x auf "kette"
  1800.  
  1801.     Weist die rechten n Zeichen einer Zeichenkette einer Variablen zu.
  1802.  
  1803.     STRTAIL
  1804.     Gebrauch : strtail VarName MarkierZeichen Zeichenkette
  1805.     Beispiel : strtail x . blafasel.bas # setzt x auf "bas"
  1806.  
  1807.     Löscht alles vor und inklusive des MarkierZeichen in der
  1808.      Zeichenkette und weist das Ergenis der Varibalen VarName zu.
  1809.  
  1810.     SOURCE
  1811.     Gebrauch : source Datei [Argumente]
  1812.     Beispiel : source mymake.sh all
  1813.     Ergebnis : Die Stapeldatei 'mymake.sh' wird mit der gesetzten Variable
  1814.      _passed = 'all' aufgerufen.
  1815.  
  1816.     Führt Kommandos aus einer Stapeldatei aus. So können Kommandos in einer
  1817.      Datei zusammengefasst werden, und diese dann mit dem Kommando 'source'
  1818.      ausgeführt werden. Ge-Source'te Dateien haben den zusätzlichen
  1819.      Vorteil, das diese Schleifen (siehe GOTO und LABEL) benutzen können.
  1820.      An die SOURCE Dateien können Argumente übergeben werden, indem nach
  1821.      dem Dateinamen diese spezifiziert werden. Argumente werden über die
  1822.      _passed Variable weitergegeben (als einzelne Zeichenkette, Menge von
  1823.      Wörtern).
  1824.  
  1825.     Lange Zeilen können mit einem Backslash (\) am Ende der Zeile in
  1826.      mehrere Zeilen aufgeteilt werden. Eine einzelne Zeile muss kürzer
  1827.      sein als 512 Zeichen, aber die geteilten Zeilen können insgesamt
  1828.      länger sein. Es gibt kein Limit für die Länge der zusammengesetzten
  1829.      Zeile.
  1830.  
  1831.     Automatisches 'sourcen' wird ausgeführt durch ein Anhängen eines
  1832.      .sh Suffix an die Stapeldatei (nicht notwendig das s-Bit zu setzen),
  1833.      und normales Aufrufen, so wie es mit einem echten Programm
  1834.      geschehen würde:
  1835.  
  1836.     --------- Datei hallo.sh ---------
  1837.     foreach i ( $_passed ) "echo "Hi $i"
  1838.     ---------------------------------
  1839.  
  1840.     $ hallo Emil Anton Bert
  1841.     hallo Emil
  1842.     hallo Anton
  1843.     hallo Bert
  1844.  
  1845.     Ist das letzte Zeichen einer Zeile in einer Stapeldatei ein '{',
  1846.      dann werden alle folgenden Zeilen an die aktuelle Zeile angehängt
  1847.      und durch Semikola gtrennt, solange bis das letzte Zeichen einer
  1848.      Zeile ein '}' ist. Solche Blöcke können verschachtelt sein.
  1849.  
  1850.     --------- Datei lang.sh ---------
  1851.     alias komplex {
  1852.      echo -n "dieses alias "
  1853.      echo "funktioniert!"
  1854.     }
  1855.     ---------------------------------
  1856.  
  1857.     $ lang
  1858.     $ komplex
  1859.     dieses alias funktioniert!
  1860.  
  1861.     TACKON
  1862.     Gebrauch : tackon VarName Pfadname Dateiname
  1863.     Beispiel : tackon x df0:c Dir # setzt x auf "df0:c/Dir"
  1864.     oder     : tackon x df0: Preferences # setzt x auf "df0:Preferences"
  1865.  
  1866.     Hängt korrekte Dateinamen an einen Pfadnamen und weist das Ergebnis
  1867.      der spezifizierten Variablen zu.
  1868.  
  1869.     TAIL
  1870.     Gebrauch : tail Dateiname [Anzahl]
  1871.     Beispiel : tail readme 20
  1872.  
  1873.     Zeigt die letzten "Anzahl" Zeilen der Datei "Dateiname" an. Wird
  1874.      Anzahl nicht angegeben, so wird 10 angenommen.
  1875.  
  1876.     TEE
  1877.     Gebrauch : tee [Datei]
  1878.     Beispiel : cc test.c | tee >error.list
  1879.             # Compiliert test.c und kopiert Fehlermeldungen
  1880.             # automatisch nach error.list
  1881.  
  1882.     Kopiert die Standardeingabe (stdin) auf die Standardausgabe
  1883.      (stdout) und die angegebene Datei. Wird die Datei nicht angegeben,
  1884.      so wird die Standardfehlerausgabe (stderr) benutzt.
  1885.  
  1886.     TOUCH
  1887.     Gebrauch : touch Datei1 [.. DateiN]
  1888.  
  1889.     Setzt den Datumsstempel der Datei auf aktuelle Zeit und Datum und
  1890.      löscht das Archive-Bit.
  1891.  
  1892.     TRUNCATE
  1893.     Gebrauch : truncate [n]
  1894.     Beispiel : alias | sort | truncate
  1895.  
  1896.     Ein Filter welches die Breite der Standardeingabe (stdin) auf die
  1897.      angegebene Breite festlegt, versucht ebenso tab und Escape-sequenzen
  1898.      durchzulassen. Wird die Breite nicht angegeben, so wird die aktuelle
  1899.      Fensterbreite benutzt.
  1900.  
  1901.     TYPE
  1902.     Synonym zu CAT.
  1903.  
  1904.     UNALIAS
  1905.     Gebrauch : unalias Name1 [.. NameN]
  1906.     Beispiel : unalias vt
  1907.  
  1908.     Löscht Aliase.
  1909.  
  1910.     UNIQ
  1911.     Gebrauch : uniq
  1912.  
  1913.     Dieses Filter löscht alle fortlaufenden, mehrfach vorkommende Zeilen
  1914.      in einer Datei, bzw der Standardeingabe. Ist besonders sinnvoll
  1915.      für sortierte Dateien.
  1916.  
  1917.     UNLOCAL
  1918.     Gebrauch : unlocal Var1 [... VarN]
  1919.  
  1920.     Löscht eine oder mehrere lokale Variablen.
  1921.  
  1922.     UNSET
  1923.     Gebrauch : unset Name1 [.. NameN]
  1924.     Beispiel : unset abc
  1925.  
  1926.     Setzt Variablen zurück. Löscht sie komplett.
  1927.  
  1928.     USAGE
  1929.     Gebrauch : usage [Kommando1 [.. KommandoN] ]
  1930.  
  1931.     Wenn ohne Argumente aufgerufen, wird eine kurze Information über
  1932.      spezielle, benutzte Kommando ausgegeben. Ansonsten wird die
  1933.      Gebrauchsanleitung der befragten Kommandos ausgegeben. Wird ein
  1934.      Kommando mit '?' als Parameter aufgerufen, so wird die
  1935.      Gebrauchsanleitung ebenfalls ausgegeben.
  1936.  
  1937.     VERSION
  1938.     Gebrauch : version
  1939.  
  1940.     Zeigt aktuelle Version der Shell, und die Autoren werden gelistet.
  1941.  
  1942.     WAITFORPORT
  1943.     Gebrauch : waitforport Portname [Sekunden]
  1944.  
  1945.     Wartet auf Eingabe des Port 'Portname'. Wartezeit ist standarmässig
  1946.      auf 10 Sekunden begrenzt.
  1947.  
  1948.     WHEREIS
  1949.     Gebrauch : whereis [-r] Dateiname [Gerät1 .. GerätN]
  1950.     Beispiel : whereis -r List df0: dh0:
  1951.  
  1952.     Wird nur der Dateiname angegeben, so durchsucht Whereis alle
  1953.      Ordner im aktuellen Ordner nach diesem Datei. Ein Asterisk '*' wird
  1954.      an den Dateinamen angehängt. Suchmuster sind erlaubt (dann wird
  1955.      kein Asterisk mehr angehängt) für Dateinamen, nicht für
  1956.      Pfadnamen. Werden zusätzliche Argumente übergeben, sucht Whereis
  1957.      nur in diesen Pfaden, nicht im aktuellen Ordner.
  1958.     Whereis -r durchsucht alle vorhandenen Geräte.
  1959.  
  1960.     WINDOW
  1961.     Gebrauch : window [-q][-f][-b][-l][-s] [Dimensionen]
  1962.     Optionen :
  1963.      -f (front, vorne) Window nach vorne holen
  1964.      -b (back, hinten) Window nach hinten schieben
  1965.      -l (large, gross) Window auf Maximum vergrössern
  1966.      -s (small, klein) Window auf Minimum verkleinern
  1967.      -a (activate, aktiviere) Window aktivieren
  1968.      -q (query, abfrage) Zeigt alle geöffneten Windows und Screens
  1969.  
  1970.     Viele Operationen für das CLI Window (Fenster). Werden Dimensionen
  1971.      angegeben, so müssen sie in der Form x y Breite Höhe spezifiziert
  1972.      werden (zwischen den Werten ein Leerzeichen).
  1973.     Das Kommando "window -l" kann sinnvoll sein für PAL Maschinen, um ein
  1974.      volles, auf PAL angepasstes Window zu erhalten, aus der login
  1975.      Sequenz heraus z.B., oder aber wenn eine Overscan Workbench
  1976.      genutzt wird.
  1977.     Die Option "-q" zeigt die Window/Screen Dimensionen eines jeden
  1978.      geöffneten Window und Screens an.
  1979.  
  1980.     WRITEFILE
  1981.     Gebrauch : writefile VarName
  1982.  
  1983.     Schreibt ein Menge von Wörtern auf die Standardausgabe, ein
  1984.      Wort pro Zeile. Achtung, der Name der Variablen (VarName)
  1985.      soll übergeben werden, nicht der Inhalt ($VarName).
  1986.  
  1987.  
  1988. IX. SPEZIAL VARIABLEN
  1989. -------------------------
  1990.  
  1991.     _abbrev
  1992.     Auf 'n' gesetzt, können interne Befehle nicht mehr abgekürzt werden.
  1993.  
  1994.     _bground
  1995.     Ist wahr, wenn die Shell mit einer nicht-interaktiven Eingabe
  1996.      gestartet wurde.
  1997.  
  1998.     _clinumber
  1999.     Enthält die aktuelle CLI Prozessnummer (1-20).
  2000.  
  2001.     _cwd
  2002.     Enthält die Zeichenkette, welche den aktuellen Ordner angibt, von
  2003.      der Wurzel (:) ausgehend. Die SHELL kann mit ihrem aktuellen Ordner
  2004.      durcheinanderkommen, wird durch ein externes Programm der Ordner
  2005.      verändert. Dazu PWD benutzen, um die _cwd Variable in solchen Fällen
  2006.      neu zu setzen.
  2007.  
  2008.     _debug
  2009.     Debug Modus. Muss auf einen Wert gesetzt sein.
  2010.  
  2011.     _every
  2012.     Enthält den Namen eines Befehls, der ausgeführt wird, bevor
  2013.      das Prompt ausgegeben wird. Bitte nicht benutzen um das Prompt
  2014.      selber auszugeben.
  2015.  
  2016.     _except
  2017.       Siehe EXCEPTION.
  2018.  
  2019.     _hilite
  2020.     Enthält die Zeichensatzattribute die benutzt werden, um Schrift
  2021.      hervorzuheben. Ein Zeichen für ein Attribut:
  2022.      b für Bold
  2023.      i für Italic
  2024.      u für Unterstrich
  2025.      r für Negativ
  2026.      c3 für Vordergrundfarbe 3
  2027.      c3,2 für Vordergrundfarbe 3 und Hintergrundfarbe 2
  2028.     Jede Kombination erlaubt. Die _hilite Standardvorgaben sind "c7",
  2029.      im Terminalmodus "r".
  2030.  
  2031.     _history
  2032.     Diese Variable enthält einen numerischen Wert, und gibt an wie weit
  2033.      im Kommandospeicher zurückgesehen werden soll. Auf 0 zu setzen, soll
  2034.      der Kommandospeicher abgeschaltet werden, um z.B. festzustellen
  2035.      ob Ihr Programm Speicher nicht freigibt. Ist standardmässig auf 50
  2036.      gesetzt.
  2037.  
  2038.     _insert
  2039.     Setzt den Standardwert für den Einfüge/Überschreib Modus für
  2040.      den Kommandozeileneditor. ESI-i schaltet zwischen beiden Modi, aber
  2041.      nach einem <RETURN> wird wieder auf einen hier angegebenen Standard-
  2042.      wert zurückgesetzt. Standardmässig ist _insert auf 1 gesetzt,
  2043.      wird _insert gelöscht, so wird der Überschreibmodus Standardwert.
  2044.  
  2045.     _ioerr
  2046.     Enthält den zweiten Fehler Kode des letzten Befehls. Wird nach jedem
  2047.      externen Kommando geändert, ebenso nach einem fehlerhaft ausgeführten
  2048.      internen Kommando. Siehe auch @ioerr().
  2049.  
  2050.     _kick2x
  2051.     Ist wahr, wenn dos.library V36 geöffnet werden konnte, was bedeutet,
  2052.      das Kickstart release 2 existiert.
  2053.  
  2054.     _lasterr
  2055.     Rückgabewert des zuletzt ausgeführten Befehls. Dies beinhält
  2056.      interne Befehle und externe Befehle, um also diese Variable zu nutzen,
  2057.      muss sie DIREKT nach Aufruf des zu befragenden Befehls
  2058.      abgefragt werden.
  2059.  
  2060.     _lcd
  2061.     Enthält den Namen des zuletzt benutzten Ordners. Das eingebaute Alias
  2062.      'dswap' wechselt in diesen Ordner. Erneut aufgerufen ist wieder
  2063.      der Ordner aktuell, der am Anfang aktiv war.
  2064.  
  2065.     _man
  2066.     Enthält den Pfad und den Namen ihrer .doc Dateien. Standardwert
  2067.      ist 'Csh:Csh.doc'.
  2068.  
  2069.     _maxerr
  2070.       Enthält den bislang schlechtesten (höchsten) Rückgabewert. Um dies
  2071.      nutzen zu können, den Wert normalerweise auf '0' setzen, dann
  2072.      ein paar Befehle ausführen, und erneut hier nachsehen.
  2073.  
  2074.     _minrows
  2075.     Enthält die minimale Anzahl Zeilen, die ein Window haben muss,
  2076.      damit das 'quick scrolling' eingeschaltet wird.
  2077.  
  2078.     _nobreak
  2079.     Schaltet CTRL-C ab wenn auf '1' gesetzt.
  2080.  
  2081.     _passed
  2082.     Diese Variable enthält die Argumente, die einem BatchDatei überge-
  2083.      ben werden, wenn es mit 'source' gestartet wird. Beispiel:
  2084.  
  2085.     test a b c d
  2086.  
  2087.     -------- Datei test.sh ----------
  2088.     echo $_passed
  2089.     foreach i ( $_passed ) "echo YO $i"
  2090.     --------------------------------
  2091.  
  2092.     _path
  2093.     Gibt die Ordner an, in denen Csh nach ausführbaren Programmen
  2094.      suchen soll. Der aktuelle Ordner und der AmigaDOS Pfad werden
  2095.      zuerst durchsucht. Dieser Pfad wird zuerst nach dem Kommando,
  2096.      dann nach Kommando.sh (Stapeldatei) durchsucht.
  2097.  
  2098.     Beispiel: set _path ram:c,ram:,sys:system,dh1:tools,df0:c
  2099.  
  2100.     _prompt
  2101.     Diese Variable enthält die Zeichen, die als Eingabeaufforderung
  2102.      ausgegeben werden. Diese kann folgende Kontrollzeichen enthalten:
  2103.      %c (color, Farbe) macht das Prompt farbig. Siehe _hilite
  2104.      %m (memory, Sepicher) gibt freien Speicher in Kb an
  2105.      %d (date, Datum) aktuelles Datum
  2106.      %t (time, Zeit) aktuelle Zeit
  2107.      %p (path, Pfad) aktueller Pfad
  2108.      %n (number, Nummer) eigene CLI-Nummer
  2109.      %v (version, Version) benutzte Csh-Version
  2110.      %h (history, K-Speicher) momentane Kommandospeicher-Nummer
  2111.      %f (free, Frei) freier Platz auf dem aktuellen Drive
  2112.      %r (pRiority, Priorität) eigene Task-Priorität
  2113.      %s (shells, Shell) Anzahl der offenen Csh's
  2114.     Voreingestellt ist "%c%p> "
  2115.     Wenn vergessen wurde, ein 'if' Kommando mit 'endif' abzuschliessen,
  2116.      wird das Prompt zu '_ '
  2117.  
  2118.     _pipe
  2119.     Der Ordner für Temporärdateien. Voreingestellt: 'T:'
  2120.  
  2121.     _qcd
  2122.     Enthält den Namen der Datei, die alle Ordner aller vorhandenen
  2123.      Geräte enthält. Falls nicht gesetzt, wird das 'quick-cd'
  2124.      abgeschaltet.
  2125.  
  2126.     _rback
  2127.     Der Name des Kommandos, das vor die Kommandozeile gehängt wird,
  2128.      falls der User ein '&' angehängt hat. Normalerweise 'rback'.
  2129.  
  2130.     _rxpath
  2131.     Wie _path, aber hier sucht Csh nach .rexx Dateien. Normalerweise
  2132.      'REXX:'
  2133.  
  2134.     _scroll
  2135.     Anzahl der Zeilen, die das Window auf einmal scrollen soll, falls
  2136.      $_minrows überschritten ist.
  2137.  
  2138.     _terminal
  2139.     Sagt aus, ob die Csh im Terminal-Modus läuft
  2140.  
  2141.     _titlebar
  2142.     Erscheint in der Titelzeile des Windows. Die gleichen Kontroll-
  2143.      zeichen wie für _prompt können verwendet werden.
  2144.  
  2145.     _version
  2146.     Enthält die aktuelle Versionsnummer von Csh, z.B. 517
  2147.  
  2148. X. FUNKTIONEN
  2149. ---------------
  2150.  
  2151.  FUNKTIONEN
  2152.     Funktionen müssen mit einem @-Zeichen anfangen und können nicht
  2153.      abgekürzt werden. Vor ihnen muss ein Leerzeichen stehen, genauso
  2154.      hinter der öffnenden und vor der schliessenden Klammer.
  2155.  
  2156.     Funktionen dürden verschachtelt werden. Gross/Kleinschreibung ist
  2157.      wichtig bei Funktionsnamen, jedoch nicht bei den Operationen.
  2158.  
  2159.     Funktionen können als Kommandos verwendet werden. In diesem Fall
  2160.      werden sie ohne @ geschrieben. Ihren Rückgabewert geben sie dann
  2161.      auf den Bildschirm aus. Diese können nicht abgekürzt werden, und
  2162.      ein Kommando gleichen Namens hat Vorrang.
  2163.         drives        -> DF0: DH1: DH2: RAM: WB_2.x:
  2164.  
  2165.     Bis jetzt können Funktionen nicht selber definiert werden.
  2166.  
  2167.     Achtung, Wortmengen und Zeichenketten sind nicht identisch.
  2168.      Nach
  2169.        set var hallo da
  2170.       ist 'var' eine Menge von Worten, aber nach
  2171.        set var "hallo da"
  2172.       ist 'var' eine einzige Zeichenkette (ein einziges Wort). Wenn die
  2173.       Variablen mit 'echo' ausgegeben werden, schauen sie gleich aus, aber
  2174.       z.B. in 'foreach' verhalten sie sich verschieden. @split und
  2175.       @concat wandeln die beiden Formen.
  2176.  
  2177.     @abbrev( Zei1 Zei2 [len] )
  2178.     wahr wenn die ersten <len> Zeichen von Zei1 eine Abkürzung von
  2179.      Zei2 sind. (Abkürzung von Kommandos, Funktionen)
  2180.     @abs( Num )
  2181.     gibt den Absolutwert von <Num> zurück
  2182.     @age( Datei )
  2183.     das Alter der Datei in Tagen, 99999 falls nicht gefunden
  2184.     @appsuff( Name suffix )
  2185.     hängt, wenn nötig, die Endung <suffix> an den Namen an
  2186.     @arg( arg ... arg )
  2187.     wie @pickargs( )
  2188.     @availmem( [Typ] )
  2189.     liefert den freien 'chip', 'fast' oder Gesamtspeicher.
  2190.     @basename( Pfad ... Pfad )
  2191.     Gibt die reinen Dateinamen ohne Pfade zurück.
  2192.     @center( Wort Länge )
  2193.     gibt eine Zeichenkette der Länge <Länge> mit <Wort> darin zentriert
  2194.     @checkport( Portname )
  2195.     sagt aus ob ein bestimmt Port existiert
  2196.     @clinum( ProcName )
  2197.     gibt die CLI-Nummer des Prozesses <ProcName> zurück.
  2198.     @complete( Abkürzung Wort ... Wort )
  2199.     gibt das erste Wort zurück, von dem <Abkürzung> eine Abk. ist
  2200.     @concat( Wort1 ... WortN )
  2201.     hängt alle Worte zu einer Zeichenkette zusammen, getrennt durch
  2202.         Leerzeichen. Siehe @split
  2203.     @confirm( Titel Punkt1 .. PunktN)
  2204.       fragt nach Bestätigung für jedes Wort <Punkt>, und gibt nur
  2205.     die Bestätigten zurück.
  2206.     @console( STDIN | STDOUT )
  2207.     sagt ob Standard-Eingabe (stdin) oder die Standard-Ausgabe
  2208.      (stdout) interaktiv (nicht umgeleitet) ist.
  2209.     @dectohex( Zahl )
  2210.     wandelt eine Zahl von Dezimal nach Hex (sedesimal)
  2211.     @delword( Wort1 ... WortN-1 WortN )
  2212.     gibt alle Worte ausser dem N-ten zurück
  2213.     @delwords( Wort1 ... WortN i j )
  2214.     löscht j Worte vom i-ten an
  2215.     @dirs( Name1 .. NameN )
  2216.     gibt nur die Ordner unter den Namen zurück
  2217.     @drive( Pfad )
  2218.     gibt den Geräte-Namen zurück, der zu 'Pfad' gehört
  2219.     @drives( )
  2220.     gibt alle Partitionen und Diskdrives zurück
  2221.     @exists( Datei )
  2222.     sagt aus ob eine Datei existiert
  2223.     @fileblks( Datei1 ... DateiN )
  2224.     sagt aus wieviele Blöcke für diese Dateien benötigt werden.
  2225.     @filelen( Datei1 ... DateiN )
  2226.     sagt aus wieviele Bytes für diese Dateien benötigt werden.
  2227.     @fileprot( Datei )
  2228.     gibt eine Zeichenkette der Sicherheits-Bits der Datei zurück.
  2229.     @filereq( Titel Pfad&Muster Dateiname )
  2230.     öffnet einen ARP Dateirequester und gibt den gewählten Namen zurück
  2231.     @files( Datei1 ... DateiN )
  2232.     gibt nur die Dateien zurück, keine Ordner. Siehe @dirs
  2233.     @freebytes( Pfad )
  2234.     die Anzahl der freien Bytes auf dem ensprechenden Pfad
  2235.     @freeblks( Pfad )
  2236.     die Anzahl der freien Blöcke auf dem ensprechenden Pfad
  2237.     @freestore( Pfad )
  2238.     der freie Speicher auf dem Pfad, gegeben in Kb und Mb
  2239.     @getenv( VarName )
  2240.     gibt den Wert der ensprechenden ENV: Variablen zurück
  2241.     @getclass( Datei )
  2242.     gibt die Klasse (Typ) der Datei zurück. Siehe Kapitel XIV
  2243.     @howmany( )
  2244.     zeigt die Zahl der laufenden CShells.
  2245.     @index( Zeichenkette Muster )
  2246.     sucht <Muster> in <Zeichenkette> und gibt Offset zurück,
  2247.      0=nicht gefunden
  2248.     @info( Pfad )
  2249.     gibt die entsprechende Zeile aus 'info' zurück
  2250.     @intersect( Wort1 ... WortN , WortN+1 ... WortM )
  2251.     zeigt jene Worte, die in beiden Listen sind. Siehe @union, @member
  2252.     @ioerr( num )
  2253.     Gibt die Fehler-Zeichenkette aus, der zur Fehlernummer <num> gehört
  2254.     @lookfor( Datei Pfad)
  2255.     sucht nach einer Datei im akt. Ordner und in <Pfad>. Siehe $_path
  2256.     @lower( Arg1 ... ArgN )
  2257.     macht seine Argumente kleingeschrieben. Siehe @upper
  2258.     @match( Wort1 ... WortN "Muster" )
  2259.     gibt jene Worte zurück, auf die das Suchmuster passt.
  2260.     @max( Wert1 ... WertN )
  2261.     bestimmt das Maximum der angegebenen Zahlen
  2262.     @megs( Wert )
  2263.     gibt eine Zahl in Kb, Mb oder Gb zurück (gerundet)
  2264.     @member( Wort Wort1 ...WortN )
  2265.     sagt aus ob <Wort> unter den anderen ist. Siehe @union, @intersect
  2266.     @min( Wert1 ... WertN )
  2267.     bestimmt das Minimum der gegebenen Zahlen
  2268.     @mounted( Gerät )
  2269.     sagt aus ob <Gerät> (z.B. RAD:) vorhanden
  2270.     @nameext( Dateiname )
  2271.     gibt die Extension (Suffix) des Dateinamens an
  2272.     @nameroot( Dateiname )
  2273.     gibt alles ausser der Extension des Dateinamens
  2274.     @opt( Arg1 ... ArgN )
  2275.     siehe @pickopts( )
  2276.     @pathname( Datei )
  2277.     gibt den Pfad zu einer Datei zurück.
  2278.     @pickargs( Arg1 ... ArgN )
  2279.     wählt aus seinen Argumenten die, welche nicht mit '-' beginnen
  2280.     @pickopts( Arg1 ... ArgN )
  2281.     wählt aus seinen Argumenten die, welche mit mit '-' beginnen
  2282.     @rpn( Ausdruck )
  2283.     berechnet den rpn Ausdruck. Siehe Kommando 'rpn'
  2284.     @sortargs( Arg1 ... AgrN )
  2285.     sortiert seine Argumente alphabetisch
  2286.     @sortnum( Wert1 ... WertN )
  2287.     sortiert seine Argumente numerisch
  2288.     @split( Zeichenkette )
  2289.     macht aus einer Zeichenkette mehrere Worte. Siehe @concat
  2290.     @strcmp( Zeichenkette1 Zeichenkette2 )
  2291.     gibt -1, 0 oder 1 abhängig vom alphabetischen Vergleich
  2292.     @strhead( Markierungszeichen Zeichenkette )
  2293.     siehe strhead Kommando
  2294.     @strleft( Zeichenkette Wert )
  2295.     siehe strleft Kommando
  2296.     @strmid( Zeichenkette Wert1 Wert2 )
  2297.     siehe strmid Kommando
  2298.     @strright( Zeichenkette Wert )
  2299.     siehe strright Kommando
  2300.     @strtail( Markierungszeichen Zeichenkette )
  2301.     siehe strtail Kommando
  2302.     @subwords( Wort1 ... WortN i j )
  2303.     gibt die nächten j Worte von i an zurück
  2304.     @tackon( Pfad Datei )
  2305.     siehe tackon Kommando
  2306.     @trim( Wort1 ... WortN )
  2307.     entfernt Leerzeichen vorn und hinten an den Worten
  2308.     @unique( Wort1 ... WortN )
  2309.     sortiert die Argumente und macht jedes einmalig
  2310.     @union( Name1 ... NameN , NameN+1 ... NameM )
  2311.     gibt die Worte zurück, ein in einer der beiden Listen sind
  2312.     @upper( Wort1 ... WortN )
  2313.     macht aus den Worten Grossschrift. Siehe @lower
  2314.     @volume( Pfad )
  2315.     gibt den Geräte-Namen für den gegebenen Pfad an
  2316.     @winheight( )
  2317.     gibt die Höhe des Windows in Punkten an
  2318.     @winleft( )
  2319.     gibt die linke Ecke des Windows zurück
  2320.     @wintop( )
  2321.     gibt die obere Ecke des Windows zurück
  2322.     @winwidth( )
  2323.     gibt die Breite des Windows zurück
  2324.     @without( Name1 ... NameN , NameN+1 ... NameM )
  2325.     gibt die Worte aus Liste 1 zurück, die nicht in Liste 2 sind
  2326.     @word( Name1 ... NameN i )
  2327.     nimmt das i-te Wort aus der Liste
  2328.     @words( Name1 ... NameN )
  2329.     gibt die Anzahl der Worte in der Liste
  2330.  
  2331.  
  2332. XI. VERSCHIEDENES
  2333. -----------------
  2334.     Csh erlaubt nun schnelles 'Scrolling' in grossen Windows. Dies
  2335.      heisst dass wenn immer der Cursor die unterste Zeile des Windows
  2336.      erreicht, der Text um mehrere Zeilen auf einmal nach oben
  2337.      springt. Allerdings funktioniert das nur mit den folgenden
  2338.      Kommandos:
  2339.       dir, cat, htype, files, search, truncate, tee
  2340.     Die Anzahl der zu scrollenden Zeilen steht in _scroll. Ein
  2341.      Wert <=1 schaltet das schnelle Scrolling' ab.
  2342.     Die Anzahl der Zeilen, die ein Window mindestens haben muss, damit
  2343.      sich das schnelle Scrolling einschaltet, steht in $_minrows
  2344.      (normalerweise 34).
  2345.     Beliebige Kommandos nach 'cat' umgeleitet, befähigen auch diese
  2346.      zum Schnellen Scroll, z.B.:
  2347.       list | cat
  2348.  
  2349.     Csh kann beendet werden durch den Close-Button in den Windows
  2350.      von AmigaDOS 2.0 Shells. Es wird dann das Kommando 'quit' aus-
  2351.      geführt. Durch das Kommando
  2352.       alias quit "Endcli;quit
  2353.      wird das Window sofort geschlossen wenn der Close-Button ange-
  2354.      klickt wird.
  2355.  
  2356.  
  2357.     EXCEPTIONS
  2358.     (Fehlerbehandlung)
  2359.     Falls ein Fehler passiert und keine Variable _except existiert, wird
  2360.      die aktuelle Zeile abgebrochen. Falls _except exisitiert, hat es
  2361.      die Form:
  2362.       "nnn;commands..."
  2363.      Wobei <nnn> der kleinste Wert ist, der einen Fehler verursachen soll.
  2364.     Wann immer ein Kommando einen Return-kode zurückgibt, der grösser
  2365.      oder gleich <nnn> ist, werden die Kommandos in _except ausgeführt.
  2366.     WENN _except EXISTIERT WIRD DIE KOMMANDOZEILE NICHT ABGEBROCHEN!
  2367.     Wenn abgebrochen werden soll, sollte das letzte Kommando in _except
  2368.      'abortline' sein.
  2369.  
  2370.     Exception handling ist während des exception handlings selber
  2371.      ausgeschaltet.
  2372.  
  2373.     Beispiele:
  2374.  
  2375.     set _except "20;abortline"
  2376.     set _except ";" # alle Fehler werden ignoriert
  2377.  
  2378. XII. Beispiele für 'SOURCE Dateien'
  2379. -----------------------------------
  2380.  
  2381. Wird in einem CLI-Fenster das Kommando 'Csh <Dateiname>'
  2382.  eingegeben oder dies im Startup-Script stehen hat, so wird die Datei
  2383.  'gesourced'.Dies entspricht in einem CLI-Fenster der Eingabe von
  2384.  'Csh' und dem Eingeben von 'source <Dateiname>' innerhalb der Shell.
  2385.  
  2386. Beispiel:
  2387.  
  2388. ### compat.sh ###
  2389.  
  2390. # Diese Alias-Liste stellt sicher, daß aus alten Csh-Versionen
  2391. # gewohnte Abkürzungen nicht neue Befehle aufrufen.
  2392.  
  2393. alias as aset
  2394. alias cl close
  2395. alias g goto
  2396. alias h help
  2397. alias he help
  2398. alias m md
  2399. alias q quit
  2400. alias re rename
  2401. alias w window
  2402.  
  2403. alias kr "rm -r ram:* >NIL:
  2404.  
  2405. ### Ende von compat.sh ###
  2406.  
  2407.  
  2408. Wenn eine Datei S:.login existiert, so wird diese beim Start jeder Shell
  2409. 'gesourced'. Dies ist nützlich für alias-Kommandos und sonstige
  2410. Einstellungen, die für alle Shells gelten sollen.
  2411.  
  2412.  
  2413. ### Beispiel S:.login ###
  2414.  
  2415. # Hier ein Beispiel für eine .login-Datei:
  2416. # (Diese Datei wird für jede neue Shell 'gesourced'.)
  2417.  
  2418. set F5 "cdir WORK:"^M
  2419. set f9 "ed s:login.sh"^M
  2420. set F9 "ed df0:s/startup-sequence"^M
  2421.  
  2422. alias toram "%q foreach i ( $q ) \"cp -r $i: ram:$i >NIL:;assign $i: ram:$i
  2423. alias ramop "md RAM:op; assign OP: ram:op
  2424. alias noop "assign OP: ; rm -r ram:op
  2425. alias newop "rm -r OP:*
  2426. alias dc "dfc df0: to df1:
  2427. alias go "%q assign WORK: Boot:$q; cd WORK:; source startme.sh
  2428. alias get "%q cp $q RAM: >NIL:
  2429. alias filter "%a%b%c exec $b \\<$a \\>$c
  2430. # Startet Kommando $b mit Datei $a als Eingabe und schreibt Resultat in
  2431. # Datei $c, Datenfluß: $a -> ($b) -> $c
  2432.  
  2433. alias rm "%q \\rm @confirm( Remove $q )
  2434.  
  2435. # alias rm "%a set f @pickargs( $a );set opts @pickargs( $a );\
  2436. # e -n \'j\' um @words( @files( $f ) ) Datei und @words( @dirs( $f ) )\
  2437. # Ordner zu löschen\"? [n] \";input b;if $b = j;\\rm $opts $f;endif
  2438. # # Für die Ängstlichen/Vorsichtigen unter uns: Dateien löschen mit Abfrage
  2439. # # Achtung: das '\' muß das letzte Zeichen der Zeile sein !!
  2440.  
  2441. set _prompt "%c%p> "
  2442. # Dieses Kommando fügt den aktuellen Pfad hervorgehoben in den Prompt ein
  2443.  
  2444. # Dieses Kommando sorgt für die Anzeige von CLI-Nummer, freiem Speicherplatz,
  2445. # Datum und Zeit im Fenster-Titel
  2446. set _titlebar "Shell %n Mem %m Date %d Time %t
  2447.  
  2448. ### Ende Beispiel .login ###
  2449.  
  2450. ****************************************************************************
  2451.  
  2452. Als CLI-Benutzer könnte die 'startup-sequence' einfach folgendermaßen
  2453.  aussehen:
  2454.  
  2455.     C:Csh S:startup.sh
  2456.  
  2457. Hier ein Beispiel für S:startup.sh:
  2458.  
  2459. ### Beispiel S:startup.sh ###
  2460.  
  2461. wind -l    # Volle Bildschirmgröße eines PAL-Rechners nutzen
  2462.     # Bemerkung: Kommandos können abgekürzt werden
  2463.     # Hier: 'wind' für 'window'
  2464.  
  2465. assign LC: Stuff:c INCLUDE: Stuff:include LIB: Boot:lib QUAD: RAM:
  2466.  
  2467. rback C:FaccII; sleep 1
  2468.     # Nach dem Starten eines Prozesses im Hintergrund ist es gut,
  2469.     # dem Rechner Zeit für das Laden des Kommandos zu geben, um
  2470.     # Nerven und Laufwerk zu schonen.
  2471.  
  2472. resident -d blink lc1 lc2 >NIL:    # verzögertes Laden von externen Kommandos
  2473.  
  2474. C:PopCli 300 C:Newcli         # Angabe des vollständigen Pfadnamens
  2475. C:FF -1 Siesta.font >NIL:    # beschleunigt die Ausführung
  2476. C:Patch_1 >NIL:
  2477. stack 8000            # Minimum für lc1 und lc1
  2478.  
  2479. source S:setdate.sh        # dort geht's weiter
  2480.  
  2481. ### Ende Beispiel startup.sh ###
  2482.  
  2483. ****************************************************************************
  2484.  
  2485. Nun folgt eine Beispiel 'source'-Datei, um das Datum und die Zeit zu setzen.
  2486.  Kann verwendet werden, wenn der Rechner keine interne Uhr besitzt.
  2487.  (z.B. A1000, A500)
  2488.  
  2489. ### setdate.sh ###
  2490.  
  2491. open CON:200/100/440/80/SetDate write 1
  2492. echo >.1 -n "Das aktuelle Datum ist "
  2493. date >.1
  2494. echo >.1 -n "Bitte neues Datum eingeben: "
  2495. input <.1 d
  2496. close 1
  2497. strlen len $d
  2498. if $len > 1 ; date $d ; endif
  2499. echo -n "Das neue Datum ist: " ; date
  2500.  
  2501. ### End of setdate.sh ###
  2502.  
  2503. ***************************************************************************
  2504.  
  2505. Hier ein 'Makefile', das ohne 'Make'-Programm auskommt:
  2506.  
  2507.     Es kann direkt von der Shell gestartet werden.
  2508.  
  2509. (Anm. d. Ü.: 'MakeDatei's beinhalten Informationen darüber, welche
  2510.      Datei(en) <A> von welchen anderen Datei(en) <B> abhängen,
  2511.      und wie die Datei <A> aus der Datei <B> neu erzeugt werden
  2512.      kann, wenn diese ein neueres Datum aufweist.)
  2513. (Anm. d. Ü.: Wollte ich schon immer mal schreiben :-)
  2514.  
  2515. ### make.sh ###
  2516.  
  2517. if -t Shell.syms Shell.h; cc +HShell.syms Shell.h; rm shell.o; endif
  2518. if -t RAM:Shell.syms Shell.syms; cp -d Shell.syms RAM:; endif
  2519.  
  2520. foreach i ( main comm1 comm2 comm3 execom globals rawconsole run set \
  2521.  sub ) "if -t $i.o $i.c; echo Compile $i...;cc +IRAM:shell.syms $i.c; endif"
  2522.  
  2523. # Die Fortsetzung einer Zeile in der nächsten Zeile (mit '\') wurde aus
  2524. # Gründen der Übersichtlichkeit angewendet.
  2525. # Dies ist jedoch nicht notwendig; kann auch alles in eine Zeile
  2526. # geschreiben werden, da kein Limit von 256 Zeichen pro Zeile mehr besteht.
  2527.  
  2528. if -t Shell run.o main.o comm1.o comm2.o comm3.o execom.o \
  2529. set.o sub.o globals.o rawconsole.o
  2530.     ln +q -m -o Shell run.o main.o comm1.o comm2.o comm3.o\
  2531.     execom.o set.o sub.o globals.o rawconsole.o -la -lc
  2532. endif
  2533.  
  2534. ### Ende von make.sh ###
  2535.  
  2536.  
  2537. XIII. Vorgabe Werte
  2538. --------------------
  2539.  
  2540. Einige Aliase sind vordefiniert wenn eine neue Shell gestartet wird,
  2541.  dies sind:
  2542.  
  2543.  CDIR
  2544.     Ein cdir <Ordner> bewirkt: Löschen des CLI-Fensters,Wechsel zum
  2545.      angegebenen Ordner und Auflistung des Inhalts.
  2546.  
  2547.  CLS
  2548.     CLI-Fenster löschen. (Auch im Terminal-Modus)
  2549.  
  2550.  DSWAP
  2551.     Wechsel zwischen aktuellem und vorherigen Ordner.
  2552.     Sollte in Skripten verwendet werden, da das Sonderzeichen für
  2553.      das vorherige Ordner sich möglicherweise ändern wird.
  2554.  
  2555.  EXIT
  2556.     Csh verlassen und CLI beenden.
  2557.  
  2558.  MANLIST
  2559.     Ausgabe einer Liste aller möglichen Argumente (also Kommandos)
  2560.      für 'man'.
  2561.  
  2562. Desweiteren sind einige Variablen und Funktionstasten vordefiniert.
  2563. Mit dem 'set' Kommando können diese angesehen werden.
  2564.  
  2565.  
  2566. XIV. Objektorientierte Eigenschaften
  2567. -------------------------------------
  2568.  
  2569. Dateiklassen haben zwei nützliche Eigenschaften:
  2570.  
  2571.     1. Die Identifizierung des Dateityps (Bild, Archiv, Animation, usw.)
  2572.  
  2573.     2. Das Überladen ('overloading') von Kommandos.
  2574.      'overloading' bedeutet den Gebrauch desselben Kommandos auf
  2575.      Dateien verschiedenen Typs, wobei die jeweils ausgeführten
  2576.      Aktionen von Typ zu Typ vollkommen unterschiedlich sein können.
  2577.      Der Sinn sollte durch die folgenden Beispiele klar werden.
  2578.  
  2579. (Anm. d .Ü.: Wem diese Materie auf den ersten Blick zu kompliziert oder
  2580.      abstrakt erscheint, der sollte nicht gleich aufgeben, sondern
  2581.      mit dem Klassen-Mechanismus ein wenig herumspielen. Er kann
  2582.      sehr hilfreich sein.)
  2583.  
  2584.     DATEIKLASSEN
  2585.  
  2586.     Klassen von Dateien können mit Hilfe mehrerer 'class' Kommandos
  2587.      definiert werden, hier ein einfaches Beispiel:
  2588.  
  2589.       class bild suff=.pic suff=.iff suff=.ilbm
  2590.       class anim suff=.anim
  2591.  
  2592.     Nach Ausführung dieser Kommandos kann die Csh jede Datei mit den
  2593.      Suffixen .pic, .iff oder .ilbm als ein Bild (bild) identifizieren.
  2594.  
  2595.     Anmerkung: Es dürfen keine Leerzeichen zwischen den Namen und dem
  2596.          '=' stehen, Leerzeichen innerhalb des Namens müssen in
  2597.          Anführungszeichen stehen.
  2598.  
  2599.     Dies sind Möglichkeiten, eine Datei zu identifizieren:
  2600.  
  2601.      suff=.doc     Erfüllt, wenn der Suffix der Datei '.doc' lautet
  2602.      name=readme     Erfüllt, wenn der Name der Datei "readme" ist
  2603.      name="mod.*"     Erfüllt, wenn der Name der Datei mit 'mod.' beginnt
  2604.      offs=14,DC..C4FD Erfüllt, wenn die Bytes beginnend mit Byte $14
  2605.               lauten: $DC, <irgendwas>, $C4, $FD
  2606.               (alle Zahlen hexadezimal!).
  2607.      Jedes Paar von Punkten ('..') steht für ein zu
  2608.      ignorierendes Byte .
  2609.      chars         Erfüllt wenn 90% aller Bytes der Datei im Bereich
  2610.              32..127 oder 9..13 liegen
  2611.      default    Immer erfüllt, wird verwendet, um den Vorgabe-Typ
  2612.              zu definieren
  2613.  
  2614.     Anmerkung: Nur das erste Zeichen wird betrachtet, so steht z. B.
  2615.      's' für 'suff'.
  2616.  
  2617.     Eine Klasse kann in mehr als einem 'class' Kommando spezifiziert
  2618.      werden. Die Identifizierung erfolgt in der gleichen Reihenfolge,
  2619.      in der die 'class' Kommandos eingegeben wurden.
  2620.     Um zum Beispiel sicherzustellen, daß ein irrtümlich mit dem Suffix
  2621.      '.lzh' benanntes 'zoo'-Archiv korrekt identifiziert wird,
  2622.      können die folgenden 'class' Kommandos verwendet werden:
  2623.  
  2624.      class zoo offs=14,DCA7C4FD
  2625.      class lzh offs=2,2D6C68..2D
  2626.      class zoo suff=.zoo
  2627.      class lzh suff=.lzh
  2628.  
  2629.     Es existiert auch eine eingebaute Klasse 'dir', die ein Ordner
  2630.      beschreibt.
  2631.  
  2632.     Zu diesem Zeitpunkt kennen wir verschiedene Typen von Dateien,
  2633.      aber was kann damit nun anfangen werden ? Dazu werden Aktionen
  2634.      (actions) benötigt, die im folgenden erläutert werden sollen.
  2635.  
  2636.     AKTIONEN UND AKTIONSDEFINITIONEN FÜR KLASSEN
  2637.  
  2638.     Für eine Klasse können die verschiedenen Aktionen in einem oder auch
  2639.      in mehreren 'class' Kommandos definiert werden.
  2640.  
  2641.      class zoo actions view="zoo -list" extr="zoo -extract"
  2642.      class lzh actions view="lz l"
  2643.      class lzh actions extr="lz e"
  2644.  
  2645.     Wenn nun versucht wird, mit der Aktion 'view' eine Datei 'test.zoo'
  2646.      anzusehen, so wird letztendlich die Befehlszeile
  2647.      'zoo -list test.zoo' ausgeführt, Eine Datei 'test.lzh' aber wird
  2648.      mit 'lz l test.lzh' bei 'view test.lzh' interpretiert.
  2649.  
  2650.     Anmerkung: Jedes angegebene Kommando durchläuft den normalen
  2651.      Csh-Interpreter, d.h. AmigaDOS- and Csh-Pfade werden durchsucht.
  2652.      Aliases mit Argumenten sind auch erlaubt, alle vom
  2653.      Benutzer eingegebenen Argumente werden in die Variable
  2654.      hinter dem '%' gespeichert.
  2655.  
  2656.  
  2657.     Wie kann einer Datei nun mitgeteilt werden, daß angesehen ('view')
  2658.      werden soll ? Dies geschieht mit einem weiteren Kommando für objekt-
  2659.      orientierte Dateibearbeitung.
  2660.  
  2661.     Das Kommando
  2662.  
  2663.      action view test.zoo
  2664.  
  2665.     wird als erstes versuchen, den Typ der angegebenen Datei zu ermitteln,
  2666.      und dann - falls dies erfolgreich war - die 'view' Aktion auf die Datei
  2667.      anwenden.
  2668.     Diese Befehlsfolge kann durch die Gebrauch eines 'alias' vereinfacht
  2669.      werden:
  2670.  
  2671.      alias v "action view"
  2672.  
  2673.      definiert ein 'v' Kommando, mit dem alle der Csh bekannten
  2674.      Dateitypen angesehen werden können.
  2675.  
  2676.     alias xtr "action extr"
  2677.  
  2678.      definiert analog ein Kommando 'xtr' mit dem alle der Csh bekannten
  2679.      Archivtypen ausgepackt werden können.
  2680.  
  2681.     Es gibt eine Aktion, die an eine Datei geschickt wird, die gestartet
  2682.      wurde, aber nicht ausführbar ist (s. Kapitel VIII).
  2683.      Diese Aktion lautet 'exec'.
  2684.     Es sei eine Klasse 'picture' definiert, nach Eingabe von
  2685.  
  2686.      class picture actions view=Mostra exec=Mostra
  2687.  
  2688.      kann ein Bild mit Hilfe des Anzeigeprogramms 'Mostra'
  2689.      angesehen werden, indem einfach der Namen des Bildes eingegeben
  2690.      wird.
  2691.     Anmerkung: Die Namen für die Aktionen sind im allgemeinen frei
  2692.      wählbar, dabei bildet (s.o.) die Aktion 'exec' eine
  2693.      Ausnahme, weiterhin könnten zukünftig Aktionen wie 'rm'
  2694.      und 'dir' implemtiert werden, d.h. für eigene Aktionen sollten
  2695.      keine Namen eingebauter Funktionen verwendet werden.
  2696.  
  2697.     Die Source-Datei class.sh definiert ein paar nützliche Klassen.
  2698.  
  2699.     ÜBERKLASSEN
  2700.  
  2701.     Angenommen es existiert eine Klasse für .c Dateien, eine
  2702.      für .h Dateien und eine für .asm Dateien. Diese wollen unterschieden
  2703.      werden aber letzten Endes sind es doch alles ASCII Dateien.
  2704.      Das kann wie folgt festgelegt werden:
  2705.  
  2706.       class c_source suff=.c is=ascii
  2707.  
  2708.     Wenn jetzt eine Aktion auf einer Datei des Tps c_source nicht
  2709.      ausgeführt werden kann, dann wird die Datei vom Typ ascii
  2710.      intepretiert, und dieselbe Aktion wird erneut ausgeführt. Dies
  2711.      geschieht solange, bis eine Klasse keine Überklasse mehr besitzt.
  2712.  
  2713.  
  2714. XV. Keymaps (Tastaturbelegungen)
  2715. --------------------------------
  2716.  
  2717.     Eine Keymap wird als eine Sammlung von 'Taste-Funktion'-Paaren
  2718.      definiert. Beide werden durch eine Nummer identifiziert.
  2719.     Es kann mehrere Keymaps geben, die sich gegenseitig aktivieren
  2720.      können, am Anfang werden wir uns aber auf Keymap 0 beziehen.
  2721.      Dies ist die Keymap, die bei Shell-Start aktiv ist.
  2722.     Alle vom Benutzer definierten Tasten überschreiben möglicherweise
  2723.      alte Definitionen der entsprechenden keymap.
  2724.  
  2725.     Alle mit (*) markierten Funktionen sind bisher nicht implementiert.
  2726.  
  2727.     TASTENKODES
  2728.  
  2729.     1..255      Das entsprechende ASCII-Zeichen
  2730.     256     Pfeil nach oben
  2731.     257     Pfeil nach unten
  2732.     258     Pfeil nach rechts
  2733.     259     Pfeil nach links
  2734.     260     'Help'-Taste
  2735.     261..270 F1..F10 (ohne Shift)
  2736.  
  2737.  
  2738.     Modifiers , also Shift, Alt, Amiga, Ctrl (zum Tastaturcode addieren)
  2739.  
  2740.     512 SHIFT (nur notwendig für Pfeile und Funktionstasten)
  2741.     1024 ESC (wenn gedrückt und losgelassen vor Taste)
  2742.  
  2743.     EDITORFUNkTIONEN
  2744.  
  2745.     - Bewegungen     bewege Cursor ...
  2746.      0 CursLeft     1 links
  2747.      1 CursRight     1 rechts
  2748.      2 WordLeft     1 Wort links
  2749.      3 WordRight     1 Wort rechts
  2750.      4 BegOfLine     an den Anfang der Zeile
  2751.      5 EndOfLine     an das Ende der Zeile
  2752.  
  2753.     - Löschen     lösche ...
  2754.     10 Backspace     Zeichen links vom Cursor
  2755.     11 Delete     Zeichen rechts vom Cursor
  2756.     12 BkspcWord     Wort links vom Cursor
  2757.     13 DelWord Wort    rechts vom Cursor
  2758.     14 DeleteToSOL     vom Anfang der Zeile bis Cursor
  2759.     15 DeleteToEOL     von Cursor bis Ende der Zeils
  2760.     16 DeleteLine     ganze Zeile
  2761.  
  2762.     - aus Kommandospeicher einfügen
  2763.     20 Back     Vorherige Zeile holen
  2764.     21 Forward     Nächste Zeile holen
  2765.     22 Beg         Erste Zeile aus Kommandospeicher holen
  2766.     23 End         Letze Zeile aus Kommandospeicher holen
  2767.     24 Complete     Zeile aus dem Kommandospeicher vervollständigen
  2768.             (wie '!')
  2769.     25 Exec     Kommandospeicher-Zeile ausführen
  2770.             und nächste Zeile holen
  2771.     26 Tail     Vorherige Zeile holen, dabei erstes Wort weglassen
  2772.     27 Bottom     Eine Zeile weiter als letzte Kommandospeicher-Zeile
  2773.             nach unten
  2774.     28 DupWord     Letztes Wort der aktuellen Zeile verdoppeln
  2775.  
  2776.     - Completion (Dateinamen vervollständigen)
  2777.     30 Normal     Erstes passendes Wort einfügen bzw. zum nächsten Wort
  2778.     31 Partial     Alle Dateien einfügen, die die Zeichenkette enthalten
  2779.     32 All         Alle passenden Dateien einfügen
  2780.     33 Ordner     Ordnernamen aus Tabelle (qcd) holen
  2781.     34 LastCD     Vorherigen Ordner einfügen
  2782.     35 Show Alle     passenden Dateien auflisten
  2783.  
  2784.     - Spezielles
  2785.     40 Insert     Umschaltung Überschreiben/Einfügen
  2786.     41 Quit     Shell beenden
  2787.     42 Help     Help aufrufen
  2788.     43 Refresh     Aktuelle Zeile neu schreiben
  2789.     44 Execute     Aktuelle Zeile ausführen
  2790.     45 Leave     Aktuelle Zeile in Kommandospeicher speichern, weiter
  2791.             mit neuer Zeile
  2792.     46 EOF         Shell beenden bzw. Dateiende anzeigen
  2793.     47 NOP         (No OPeration) keine Aktion
  2794.     48 Echo^O     ^O ausgeben
  2795.     49 Beep     ^G ausgeben
  2796.  
  2797.     - Sonstiges
  2798.     50 Fkey     Kommando der letzten Funktionstaste ausführen
  2799.     51 Menu     Kommando der letzten Menüfunktion ausführen
  2800.     52 Undo     Letztes Edierkommando wiederholen
  2801.     53 Repeat     Letzte Funktion wiederholen
  2802.     54 SwapChar     Die beiden Zeichen links vom Cursor vertauschen
  2803.  
  2804.  
  2805.     Kommandotypen
  2806.  
  2807.     0 +x         Funktion mit Nummer 'x' gemäß obiger Liste
  2808.     512 +x         Auf Keymap Nummer 'x' umschalten , x=0..7
  2809.     1024+x         Zeichen mit ASCII-Nummer 'x' einfügen , x=1..255
  2810.     1536+x         Makro x ausführen , x=1..15 (*)
  2811.     2048+x         Zeichenkette x einfügen , x=1..15 (*)
  2812.  
  2813.     Beispiel:
  2814.  
  2815.     keymap 0 66=49     # B = Piepton
  2816.     keymap 0 2=16     # ^B = Zeile löschen
  2817.     keymap 0 1122=35 # ESC-b = passende Dateien auflisten
  2818.              # 1122 = 1024(ESC) + 98(b)
  2819.  
  2820.     keymap 0 771=4     # Shift-<Pfeiltaste Links> = Zeilenanfang
  2821.              # 771 = 512(Shift) + 259(<Pfeiltaste Links>)
  2822.     keymap 0 770=5     # Shift-<Pfeiltaste Rechts> = Zeilenende
  2823.  
  2824.  
  2825.  
  2826. GLOSSAR
  2827. -------
  2828. Alias        Ein alternativer Name für ein Kommando oder
  2829.          Kommandoabfolge die mit dem Alias Kommando
  2830.          spezifiziert wird.
  2831. Application    Allgemein ein Programmpaket, etwa DPaint.
  2832. Archive        Eine Kopie/Backup einer Datei, Meist ist das Archive-Bit
  2833.          gemeint, welches angibt, ob von der Datei bereits eine
  2834.          Sicherheitskopie gemacht wurde.
  2835. Argument    Eine zusätzliche Information, die an ein Kommando
  2836.          übergeben wird, wie etwa Dateiname, Werte oder Optionen.
  2837. ASCII        American Standard Code for Information Interchange,
  2838.          Standard für Computerzeichensätze.
  2839. Assign        Eine Verbindung eines physikalischen Ordners zu einem
  2840.          logischen Gerätenamens. Etwa RAM:T ist meist als T: bekannt.
  2841. Backup        Eine Kopie einer Datei auf einem physikalisch externen Gerät,
  2842.          z.B. Streamer, Diskette.
  2843. Binary        Binäres (dual) Zahlensystem, hier ist aber oft eine Datei
  2844.          gemeint die auch non-Ascii Zeichen enthält (Zeichen mit
  2845.          Ascii-Kode >128), etwa ausführbare Programme.
  2846. Bit        (engl. 'ein bißchen') Binäre Einheit, hier oft als Flag,
  2847.          also Vorzeichen gemeint.
  2848. Block         Serie von 512 Bytes auf Gerät.
  2849. Byte        Speichereinheit von 8 Bits Länge, normal genau die
  2850.          Information für ein Zeichen.
  2851. Chip        Hiermit ist der Speicherbereich gemeint, der auf dem Amiga
  2852.          den Customchips zu verfügung steht. Auch als
  2853.          Grafikspeicher bekannt. Meist 1 MB RAM (A500, A2000) oder
  2854.          2 MB (A3000,A500+).
  2855. CLI        Command Line Interface. Damit ist das Programm gemeint,
  2856.          welches überhaupt die Kommunikation per Tastatur mit dem
  2857.          Rechner ermöglicht (Shell).
  2858. Compiler    Programm, welches ein rohes Programm in einer höheren
  2859.          Sprache, etwa C, geschrieben, in eine dem Rechner tatsächlich
  2860.          verständliche Instruktionsfolge übersezt.
  2861. Cursor        Die kleine rechteckige Farbmarkierung, unter der die
  2862.          magischen Zeichen erscheinen.
  2863. Default        Vorgabewert, Vorgabezustand.
  2864. Delete        Physikalisch Löschen, entfernen.
  2865. Device        Siehe Gerät.
  2866. Directory    Verzeichniss. Ordner. Schublade. Ablage im Dateibaum.
  2867. DOS        Disk Operating System. Eigentliches Betriebsystem.
  2868.          Ermöglicht erst die Dateioperationen.
  2869. Editor        Programm um Texte einzugeben, etwa ED.
  2870. Environment Variable    Eine Variable in der ein Wert oder eine
  2871.          Zeichenkette temporär abgespeichert werden kann.
  2872. Fast        Genereller Speicher des Amigas. Kann von den Custom Chips
  2873.          nicht angesprochen werden.
  2874. File        Datei, Folge von Zeichen.
  2875. Flag        Vorzeichen, Indikator für bestimmten Status.
  2876. Gb        Gigabyte, 1024 Megabytes. (1 Milliarde Zeichen)
  2877. Gerät        Physikalischer Mechanismus, etwa Diskette DF0: oder
  2878.          aber auch logische Einheit wie RAM: um Daten abzuspeichern
  2879.          oder zu laden.
  2880. Hard Disk    Festplatte. Moderner, schneller Massenspeicher. Abk. HD.
  2881. Hexadezimal    Auf dem 16-er System basierendes Zahlensystem. Zahlen
  2882.          größer 9 werden durch die Zeichen A-F gegeben.
  2883.          Eigentlich grie. Sedesimal.
  2884. History        Kommando(Vergangenheits)speicher. Liste mit den zuletzt
  2885.          ausgeführten Kommandos.
  2886. Kb        Kilobyte, 1024 Bytes.
  2887. Keymap        Tastaturbelegung, ist auf dem Amiga variabel.
  2888. Kickstart    Oft auch als ROM bezeichnet. Bei alten Amigas per
  2889.          Diskette zu laden, beinhält grundlegende Software.
  2890. Link        Zeiger, Verbindung auf eine Datei.
  2891. Lokal        Nur innerhalb einer Prozedur gültige Option, Variable.
  2892. Mb        Megabyte, 1024 Kb (1 Million Zeichen)
  2893. Memory        Speicher.
  2894. Menu        Liste von Auf-dem-Schirm Optionen. Mit dem Menuknopf
  2895.          (Rechte Maustaste) erhältliche Optionenliste.
  2896. Menu Item    Option im Menu. Menupunkt.
  2897. Multitasking    Stärke des Amigas. Hiermit wird die Fähigkeit bezeichnet,
  2898.          mehrere Programme scheinbar gleichzeitig auszuführen.
  2899. Offset        Hier ist damit eine Folge von Bytes gemeint.
  2900. Partition    Einteilung auf Festplatte, die somit mehrere logische
  2901.          Geräte zur Verfügung stellt.
  2902. Path        Pfad. Weg innerhalb des Dateibaums von Wurzel zu Blatt,
  2903.          hier Datei. Auch Suchpfad, also Zeichenkette, die
  2904.          mehrere Pfade beinhält, die angibt wo Programme bei Aufruf
  2905.          zu suchen sind.
  2906. Pattern        Suchmuster.
  2907. Pipe        (engl. Rohr) Datenstrom, dieser kann von einem Programm
  2908.          an das Nächste übergeben werden.
  2909. Process        Task, laufendes Programm. Folge von Instruktionen.
  2910. Prompt        Eingabeaufforderungstext. Etwa 1>:
  2911. Pure        Ein Sicherheits-Bit, welches angibt ob ein Programm
  2912.          resident geladen werden kann. Muss vom Compiler unterstüzt
  2913.          werden.
  2914. RAM        Random Access Memory. Generel zugängiger Speicher.
  2915. RAM Disk    Logisches Gerät im Speicher. Ist dynamisch aufgebaut. Nur
  2916.          durch Speicherkapazität begrenzt.
  2917. Requester    Fenster in dem eine Datei interaktiv spezifiziert weden kann.
  2918. Resident    Ein Programm kann in den Speicher geladen werden, es wird
  2919.          dann nur noch direkt im Speicher aufgerufen, braucht nicht
  2920.          mehr erneut geladen werden. Enormer Zeitvorteil bei oft
  2921.          vorkommenden Programmen.
  2922. Return Kode    Rückgabewert von Programmen oder Stapeldateien. Damit
  2923.          kann auf erfolgreichen Durchlauf eines Programms gecheckt
  2924.          werden.
  2925. ROM        Read Only Memory. Speicherbereich, der nicht gelöscht
  2926.          oder beschrieben werden kann, Beinhält normal ein
  2927.          grundlegendes Betriebsystem.
  2928. Screen        Grafische Fähigkeit des Amigas. Es können mehrere solcher
  2929.          Schirme, auch mit verschiedenen Auflösungen geöffnet werden.
  2930. Scroll        Verschieben eines Textes nach oben (oder generell in eine
  2931.          Richtung).
  2932. Shell        (engl. Muschel, Umgebung) Erweiterter CLI. Programm zur
  2933.          Kommunikation mit dem Computer.
  2934. Source        Quellkode. Hier ist damit aber der Vorgang gemeint, eine
  2935.          Stapeldatei zu interpretieren und ablaufen zu lassen.
  2936. Stack        Ein spezieller Bereich des RAMs der allen Programmen für
  2937.          temporäre Speicherung dient.
  2938. Stapeldatei    Abfolge von Kommandos die in einer Datei zusammengefasst
  2939.          sind. Dies ermöglicht auch eine Steuerung durch Sprungmarken
  2940.          und Schleifen.
  2941. String        Zeichenkette.
  2942. Suchmuster    Vorgegebenes Muster nach dem etwas durchsucht werden
  2943.          soll. Platzhalter und Kriterien.
  2944. Syntax        Grammatik. Regel.
  2945. Volume        Gerätename. (Etwa Workbench:)
  2946. Workbench    Graphische Benutzeroberfläche des Amigas.
  2947. Zeichenkette    Folge von Zeichen. Intern duch ein Null-Zeichen
  2948.          abgeschlossen. Kann auch eine Matrix beinhalten.
  2949. QED.
  2950.